导航:首页 > 编程语言 > 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进程相关的资料

热点内容
qt编程入门pdf 浏览:597
php中是根据指针查的数据吗 浏览:273
安卓手机驱动为什么不能提取通用 浏览:706
转行程序员失败的人 浏览:726
延迟命令方块 浏览:495
某视频网站为什么安卓可以投屏 浏览:649
服务器解释器在哪个文件夹 浏览:93
app督促服务在哪里 浏览:990
命令与征服3语音 浏览:997
用纸片和怎么才能做一个解压球 浏览:474
vim显示命令 浏览:292
程序员给老婆送手机 浏览:82
胖子程序员视频 浏览:140
手机闽政通app下载在哪里 浏览:112
摩托车发动机压缩机 浏览:694
phpwinexe 浏览:756
如何拿自己的电脑做服务器 浏览:709
go算法实现 浏览:774
云加密机区别 浏览:272
服务器masterup什么意思 浏览:985