首页 > 作文

PHP CLI模式下的多进程应用分析

更新时间:2023-04-06 10:37:08 阅读: 评论:0

php在很多时候不适合做常驻的shell进程, 他没有专门的gc例程, 也没有有效的内存管理途径. 所以如果用php做常驻shell, 你会经常被内存耗尽导致abort而unhappy.

而且, 如果输入数据非法, 而脚本没有检测, 导致abort, 也会让你很不开心.

那? 怎么办呢?

多进程….

为什么呢?

优点:
1. 使用多进程, 子进程结束以后, 内核会负责回收资源
2. 使用多进程,子进程异常退出不会导致整个进程thread退出. 父进程还有机会重建流程.
3. 一个常驻主进程, 只负责任务分发, 逻辑更清楚

then, 怎么做呢?

接下来, 我们使用php提供的posix和pcntl系列函数, 来实现一个php命令解析器, 主进程负责接受用户输入, 然后fork子进程执行, 并负责回显子进程的结束状态.

代码如下, 我加了注释, 如果有不懂的地方, 可以翻阅手册相关函数, 或者回复留言.

复制代码 代码如下:

#!/bin/env php

<?php

/** a example denoted muti-process application in php

* @filename fork.php

* @touch date wed 10 jun 2009 10:25:51 pm cst

* @author laruence<laruence@baidu.com>

* @licen /d/file/titlepic/3_0.txt php licen 3.0

* @version 1.0.0

*/

/** 确保这个函数只能运行在shell中 */

if (substr(php_sapi_na谁家新燕啄春泥的上一句me(), 0, 3) !== ‘cli’) {

die(“this programe can only be r黯然是什么意思un in cli mode”);

}

/** 关闭最大执行时间限制, 在cli模式下, 这个语句其实不必要 */

t_time_limit(0);

$pid = posix_getpid(); //取得主进程id

$ur = posix_getlogin(); //取得用户名

echo <<<eod

usage: [command | expression]

input php code to execute by fork a new process

input quit to exit

shell executor versi漫画mmon 1.0.0 by laruence

eod;

while (true) {

$prompt = “\n{$ur}$ “;

$input = readline($prompt);

readline_add_history($input);

if ($input == ‘quit’) {

break;

}

process_execute($input . ‘;’);

}

exit(0);

function process_execute($input) {

$pid = pcntl_fork(); //创建子进程

if ($pid == 0) {//子进程

$pid = po变形记胡耿six_getpid();

echo “* process {$pid} was created, and executed:\n\n”;

eval($input); //解析命令

exit;

} el {//主进程

$pid = pcntl_wait($status, wuntraced); //取得子进程结束状态

if (pcntl_wifexited($status)) {

echo 全国计算机一级成绩查询“\n\n* sub process: {$pid} exited with {$status}”;

}

}

}

但有一点, 我一定要提醒:


复制代码 代码如下:

process control should not be enabled within a webrver environment and unexpected results may happen if any process control functions are ud within a webrver environment. –摘自php手也就是说, 打消你在php web开发中使用多进程的念头吧!

原文:/d/file/titlepic/930.html

本文发布于:2023-04-06 10:36:54,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/zuowen/74501591211c60f30a92a6e35e968f1b.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

本文word下载地址:PHP CLI模式下的多进程应用分析.doc

本文 PDF 下载地址:PHP CLI模式下的多进程应用分析.pdf

标签:进程   代码   函数   结束
相关文章
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图