导航:首页 > 编程语言 > php进程

php进程

发布时间:2022-01-15 23:58:57

1. php如何获得系统进程号

<?php
/*
**查看WINDOWS系统进程列表,并查找指定进程是否存在
*/
$tasklist = $_SERVER["WINDIR"]."\system32\tasklist.exe"; //找到windows系统下tasklist的路径
//print($tasklist); //打印tasklist的路径
@exec($tasklist,$arr); //运行tasklist.exe,返回一个数组$arr
//print_r($arr); //打印数组
//用循环打印进程列表
foreach($arr as $value){
$list = explode(" ",$value);
print($list[0].'<br />');
//查找指定进程并打印
/* if('php.exe'==$list[0]){
echo $info[0].'<br />';
} */
}
?>

2. 如何在PHP里启动一个进程以后让它在后台运行

在LINUX/UNIX下:

WINNT的start命令比WIN9X的多很多选项。

3. 如何开启服务器php进程

apache开启时会自动加载php到进程中(需要设置php5_mole),并加载了core, zendengine, extesion 3个模块。
core是核心,处理各种请求,stream模式
zendengine是解释器,用来执行用户代码
extension则是php的插件,比较常用的类似于mysqli, pdo

4. 如何关闭php-fpm进程

可以去/etc/init.d/目录下看看有没有php5.4-fpm或php7.0-fpm这种文件,如果有,可以用service php5.4-fpm stop这种方式停掉服务就可以了,如果还有不明白的话,你可以在后盾人看看视频找找答案,有空多看看时间长了,慢慢就明白了,希望能帮到你,给个采纳吧谢谢(ಡωಡ)hiahiahia

5. php如何开启一个进程去关闭另一个进程

执行 ps 命令,看进程号,然后 kill 掉,或者让另一个进程给这个进程号发送 SIGTERM 信号,这个进程就退出了

6. 如何看php-fpm 进程数量是否足够

使用 netstat -napo |grep "php-fpm" | wc -l 查看一下当前fastcgi进程个数,如果个数接近conf里配置的上限,就需要调高进程数。

7. php在web上运行是多进程还是单进程

php在web上运行是单进程的,具体原因如下:
1、PHP是一个单线程的脚本开发语言,它常在Web开发及系统集成中出现。
PHP是单进程单线程的,当处理复杂的业务的时候我们会发现他串行执行命令的时候CPU、磁盘、内存等利用的都很低有很多时候都是在排队等待,有的时候我们想并发的让他去执行一批任务然后一起拿解决结果是一件很痛苦的事情(自己用pthread或者其他方式才能解决,但是这很痛苦)开发语言一直在升级变化适应需要。另外,可以考虑通讯使用Swoole。
2、解决方案如下:
分前后端,前端可以通过消息中间件,同步、异步 调用一个或多个接口。但是socket的扩展确确实实不咋好用。不是普通小企业能做的出来的。

8. PHP 中怎样终止单个进程

<?php
exec("kill-9pid,$op,$status);
?>

把结果逐行追加到$op的结尾处,只有指定了第二 个参数时,才可以用第三个参数,用来取得命令执行的状态码。$status 1 kill成功,0 是失败(一般情况下是无此进程)。


我的实际项目中是在执行的开始通过getmypid()获取进程id保存到数据库,如果crontab再次触发则把之前的进程kill掉再重新执行一遍以上代码。


希望能帮到你。

9. 如何防止PHP进程异常退出

通常,在cli下运行的常驻后台PHP进程,可能异常退出,比如php执行过程中出现的致命错误,或被 kill 命令手动杀死等。如下面的php代码:
while(1){
$content = fgets(STDIN);
if(empty($content)){
sleep(1);
}
//逻辑处理部分代码省略
}
排查过程
我们使用register_shutdown_function来跟踪下到底是什么错误导致的进程退出。(想更多了解register_shutdown_function,请查看博文 妙用php中的register_shutdown_function和fastcgi_finish_request )加入了错误捕捉代码。如下:
$is_end = false;
function catch_error(){
global $is_end;
$time = date('Y-m-d H:i:s');
$error = error_get_last();
$msg = "$time [error]";
if($is_end){
$msg .= "is_end[yes]";
}else{
$msg .= "is_end[no]";
}
if($error){
$msg .= var_export($error,1);
}
echo $msg."\r\n";
}
register_shutdown_function("catch_error");
可是,php进程再次退出。而在日志中并没有记录任何信息。说明register_shutdown_function方法根本没有执行。是什么导致register_shutdown_function方法没有运行呢?在php的官方文档中又这样一个注释:
Shutdown functions will not be executed if the process is killed with a SIGTERM or SIGKILL signal. While you cannot intercept a SIGKILL, you can use pcntl_signal() to install a handler for a SIGTERM which uses exit() to end cleanly.
注释的意思是当php进程获得SIGTERM和SIGKILL信号而退出时,是不执行register_shutdown_function方法的。可以使用pcntl_signal()方法来捕获信息,并调用相应的处理方法。
好,那是不是信号导致我们的php进程退出呢?我们加入如下代码:
declare(ticks = 1);
function sig_handler($signo){
$time = date('Y-m-d H:i:s');
echo $time." exit signo[{$signo}]\r\n";
exit("");
}
pcntl_signal(SIGTERM, "sig_handler");
pcntl_signal(SIGHUP, "sig_handler");
pcntl_signal(SIGINT, "sig_handler");
pcntl_signal(SIGQUIT, "sig_handler");
pcntl_signal(SIGILL, "sig_handler");
pcntl_signal(SIGPIPE, "sig_handler");
pcntl_signal(SIGALRM, "sig_handler");
过一段时间,发现php进程退出了,日志中出现了如下日志信息:
2014-11-23 18:30:06 exit signo[14]
2014-11-23 18:30:06 [error]is_end[no]
看来是sigalarm信号导致php进程退出了。这个信号是可以捕获和处理的。这样无关紧要的信号,我们还是忽略吧。最终的代码如下:
declare(ticks = 1);
$is_end = false;
function catch_error(){
global $is_end;
$time = date('Y-m-d H:i:s');
$error = error_get_last();
$msg = "$time [error]";
if($is_end){
$msg .= "is_end[yes]";
}else{
$msg .= "is_end[no]";
}
if($error){
$msg .= var_export($error,1);
}
echo $msg."\r\n";
}
register_shutdown_function("catch_error");
function sig_handler($signo){
$time = date('Y-m-d H:i:s');
if($signo == 14){
//忽略alarm信号
echo $time." ignore alarm signo[{$signo}]\r\n";
}else{
echo $time." exit signo[{$signo}]\r\n";
exit("");
}
}
pcntl_signal(SIGTERM, "sig_handler");
pcntl_signal(SIGHUP, "sig_handler");
pcntl_signal(SIGINT, "sig_handler");
pcntl_signal(SIGQUIT, "sig_handler");
pcntl_signal(SIGILL, "sig_handler");
pcntl_signal(SIGPIPE, "sig_handler");
pcntl_signal(SIGALRM, "sig_handler");
while(1){
$content = fgets(STDIN);
if(empty($content)){
sleep(1);
}
//逻辑处理部分代码省略
}
$is_end = true;
经过一段观察,在日志中又发现了alarm相关的日志,但是php进程依然在。看来我们的修改有作用了。

阅读全文

与php进程相关的资料

热点内容
调研编译写信息 浏览:857
python冯诺依曼 浏览:415
同时安装多个app有什么影响 浏览:251
奥术杀戮命令宏 浏览:181
用sdes加密明文字母e 浏览:358
单片机原理及应用试题 浏览:423
易语言开启指定文件夹 浏览:38
马思纯参加密室大逃脱 浏览:319
文件夹冬季浇筑温度 浏览:710
京东有返点的aPp叫什么 浏览:601
如何查看u点家庭服务器是几兆 浏览:262
python应用接口怎么接 浏览:67
腐蚀怎么进不去服务器啊 浏览:359
linuxcpiogz 浏览:630
安卓中的布局是什么文件 浏览:397
dex反编译部分代码无法查看 浏览:463
linuxandroid编译 浏览:603
程序员电视剧20集 浏览:910
怎么扩建文件夹 浏览:160
波普诺社会学pdf 浏览:98