【PHP进程锁定问题分析研究_PHP教程】教程文章相关的互联网学习教程文章

正在运行PHP进程的当前活动

我运行的PHP脚本要花费几个小时,通常需要很长时间,但是我不确定它在做什么或要持续多长时间. 我知道我可以通过“ top”查看它运行了多长时间和使用的内存,但是有什么方法可以实际看到正在运行的PHP进程中正在处理哪些行?解决方法:选项是: >将所有内容记录到某个日志文件中(在每一行代码之前和之后)>使用strace检查您的进程当前正在执行哪个系统调用>在php中启用xdebug并从支持它的某个IDE远程连接到您的脚本.

如何将pid从一个PHP进程传递到另一个PHP进程?

有一个长期存在的PHP进程,它支持信号(SIGHUP等),另一个PHP进程需要知道第一个的PID来发送信号. 我想设置一个环境变量,该变量将在第二个(客户端)过程中读取并用于我的目的,但putenv(… posix_getpid()…)似乎并未使其对另一个对象可见处理. 如何使在一个PHP进程中设置的环境变量对另一个PHP进程可见?如果这不可能,那么首选的方式是什么(我不想为此使用文件或数据库)?解决方法:您正在谈论的是Inter-Process Communication (IPC).解...

实时查看php进程

我正在修复一个非常慢的wordpress网站.我需要一种方法来查看php在创建页面时在做什么.我可以使用Visual Studio和asp.net做到这一点.是否有用于php的类似工具?解决方法:我认为您正在寻找像http://xdebug.org/docs/profiler这样的PHP Profiler

php-Httpd进程高内存使用率和缓慢页面加载

我在Windows Vista计算机上运行wampserver.我已经做了很长时间了,效果很好.我已经通过此设置完成了许多项目. 但是,今天,无需更改任何内容(无需配置等),仅更改PHP代码,我发现每次加载网站页面(具有用户会话或访问数据库的页面)的加载速度都非常慢-在30秒钟内,它们花费1或2秒. 当我查看任务管理器时,我可以在页面加载中看到httpd进程从10mb跳到30mb,90mb,120mb,250mb,然后又回落. 我已经测试了以前的php代码项目,它们似乎也很慢! 到...

长进程的PHP

我需要运行一个很长的php脚本(四个半,五个小时). 该脚本有时会成功运行,但有时会被莫名其妙地杀死(可能与共享主机有关?). 我认为运行脚本的解决方案可能较小. 为此,我编写了一个脚本来存储其状态&位置的xml文件中,并执行脚本的一小段,然后再移动位置. 我在连接脚本的最后一部分时遇到问题,该脚本应该结束当前进程&重新执行脚本. 也许我完全把错误的树叫起来! 我已经阅读了我可以在SO和其他地方找到的内容,但我仍然没有一个明智的...

请写一段 PHP 代码 ,确保多个进程同时写入同一个文件成功【代码】

方案一:function writeData($filepath, $data) { $fp = fopen($filepath,a); do{ usleep(100); }while (!flock($fp, LOCK_EX)); $res = fwrite($fp, $data."\n"); flock($fp, LOCK_UN); fclose($fp); return $res; } 本文出自 “我知” 博客,请务必保留此出处http://iknow.blog.51cto.com/6209466/1058876 方案二:function writeData($path, $mode,$data,$max_retries = 10) { $fp = fopen($path, $mode); $retries = ...

php进程 热更新

后台启动的php守护进程时 文件内include的代码变更并未生效,需要重启进程,但是有些对程序要求较高。 1 inotify-toolsyum install inotify-tools 参考文章:https://segmentfault.com/q/1010000018623406 2 swoole workerStart 3 workerman reload机制

php-如何杀死与30分钟以上的grep匹配的进程?【代码】

我有一组并行运行的进程. 有时有些闲荡时间超出了脚本的预期范围:$time_start = microtime(true) $max_run_time = 30 * 60; // 30 minutes, measured in seconds while ((microtime(true)-$time_start) < $max_run_time) {// do stuff, but quit after 30 minutes }我想杀死此脚本的旧进程,这些进程的时间已超过30分钟. 我如何在命令行上做很多事情? 这是当前正在运行的进程的示例:> ps aux | grep script.php my_user 85...

PHP-Symfony2-进程启动symfony2命令【代码】

我的目标是在后台启动一些耗时的功能,以避免用户在呈现服务器响应之前等待. 我有一个Symfony项目,正在从控制器启动异步过程.此过程将启动一个Symfony命令,该命令将调用另一个控制器. 问题是当我使用start()调用过程时$process = new Process('/usr/bin/php '.$this->get('kernel')->getRootDir().'/console scopusftpupload ' . escapeshellcmd($params)); $process->start();然后,该过程什么都没有发生,但是重定向和我后来使用的其...

PHP-ssh2_exec:等待进程结束,然后再运行【代码】

我正在使用ssh2_exec运行命令,但看起来它在$stream1进程结束之前运行$stream2.如何仅在$stream1结束后运行$stream2?<?php $connection = ssh2_connect('shell.example.com', 22); ssh2_auth_password($connection, 'username', 'password');$stream1= ssh2_exec($connection, 'command to run');$stream2 = ssh2_exec($connection, 'command to run 2');?>解决方法:问题解决了: @Barmar建议我看看php.net/manual/en/function.ssh...

如果用户关闭连接,Apache将杀死一个PHP进程

我和我的一位同事有以下论点.我说过,如果用户关闭连接(例如,关闭窗口或选项卡),Apache将不会终止PHP进程.虽然我的同事说相反的话-如果TCP连接关闭,Apache将终止PHP进程. 我们确实对其进行了测试,看起来好像是正确的,但是我不确定这是如何工作的.解决方法:首先:您是对的;-) 发生的是,您的浏览器选择忽略答案并继续前进.它不会向apache发送“我退出,您可以停止”的信息. 该过程将一直运行到完成为止.因此,如果您编写了一个无限循环...

如何在PHP之间使用不同函数甚至不同进程的不同进程的命名管道?【代码】

我想写一个Ajax Web应用程序,一个特定的游戏.两个Web客户端必须通过PHP服务器相互通信.我解决这个问题的方法是在客户端和服务器以及服务器和客户端之间使用Ajax.每个客户端使用Ajax创建一个单独的服务器进程.我希望这两个服务器进程通过MySQL和命名管道进行通信.我需要命名管道来获得整个应用程序的即时响应. 我不能使用一个服务器进程,它首先创建一个管道,然后分叉成两个使用管道的进程. Web应用程序在Web浏览器发送请求时创建服务...

如何找出一个特定的进程仍然在PHP中运行

我正在编写一个脚本来构建其他脚本的队列,并且应该管理它们的启动.管理器脚本应该知道哪个子进程已经完成,因此它可以启动队列中等待的其他脚本. 我添加了一个“& echo $!”获取每个子进程的进程ID.所以我有我的子进程Process Ids,现在我正在使用系统“ps”程序调用来查找子进程是否仍在运行. 问题是我的脚本目前只在类Unix系统中运行.我不知道如何在Windows中获取我孩子的PID,而我的脚本还没有在Windows中解析“tasklist”命令的输...

用php杀死linux中的用户进程【代码】

我正在尝试编写一个php脚本来杀死redhat机器中的用户. 我知道为apache提供以root身份执行操作的能力是可能的(而且非常不安全),但我需要能够从网页中杀死任何用户,是否有任何人有任何好的工作脚本或指向我到的地方找到更多信息?我可以使用这个代码(我从php.net中获取)使其工作,但我认为这只有在我给apache root权限或以root身份运行apache时才有效.<?phpexec("kill -9 $pid"); ?>这个命令提取用户及其进程ID,我假设一旦找到apache问...

PHP exec()返回后台进程的值(linux)【代码】

在Linux上使用PHP,我想确定是否成功执行了使用exec()运行的shell命令.我正在使用return_var参数来检查返回值是否为0.这样可以正常工作,直到我需要为必须在后台运行的进程执行相同的操作.例如,在以下命令中$result返回0:exec('badcommand > /dev/null 2>&1 &', $output, $result);我故意将重定向放在那里,我不想捕获任何输出.我只是想知道命令已成功执行.这可能吗? 谢谢,Brian解决方法:我的猜测是你要做的事情不是直接可能的.通过...