Linux下实现PHP多进程的方法分享_php技巧

PHP多进程:使用PHP的Process Control Functions(PCNTL/线程控制函数)
函数参考可见:http://www.php.net/manual/zh/ref.pcntl.php
只能用在Unix Like OS,Windows不可用。
编译php的时候,需要加上–enable-pcntl,且推荐仅仅在CLI模式运行,不要在WEB服务器环境运行。

以下为实现PHP多进程的简单测试代码:

复制代码 代码如下:

<?php
declare(ticks=1);
$bWaitFlag = FALSE; /// 是否等待进程结束
$intNum = 10; /// 进程总数
$pids = array(); /// 进程PID数组

echo ("Start\n");

for($i = 0; $i < $intNum; $i++) {

$pids[$i] = pcntl_fork();/// 产生子进程,而且从当前行之下开试运行代码,而且不继承父进程的数据信息

if(!$pids[$i]) {
// 子进程进程代码段_Start
$str="";
sleep(5+$i);
for ($j=0;$j<$i;$j++) {$str.="*";}
echo "$i -> " . time() . " $str \n";
exit();
// 子进程进程代码段_End
}

}
if ($bWaitFlag)
{
for($i = 0; $i < $intNum; $i++) {
pcntl_waitpid($pids[$i], $status, WUNTRACED);
echo "wait $i -> " . time() . "\n";
}
}
echo ("End\n");
?>

时间: 2024-10-25 19:26:39

Linux下实现PHP多进程的方法分享_php技巧的相关文章

Linux下获取用户主目录的方法分享

  Linux下获取用户主目录的方法分享     方法如下 char *path = getenv("HOME"); printf("path = %sn",path); getenv是标准库函数,包含stdlib.h头文件就可.

PHP5.5.15+Apache2.4.10+MySQL5.6.20配置方法分享_php技巧

对于学习php的新手,由于网上的配置方法都是很久之前的,及时性不高,环境配置往往令人很头疼,我初学php配置环境时配置了3个晚上,每次总是会出现这样或那样的问题,如今把最新版的PHP5.5.15+Apache2.4.10+MySQL5.6.20,win7x86的配置方法分享给大家,64位的同理,不过下载的软件需要也是64位的. 环境:win7 32.(64位的同理,下载相关软件必须是对应的64位版本)              PHP5.5.15(php-5.5.15-Win32-VC11-x8

linux下时间同步的两种方法分享

  方法1: 与一个已知的时间服务器同步 代码如下: ntpdate time.nist.gov 其中 time.nist.gov 是一个时间服务器. 删除本地时间并设置时区为上海 代码如下: rm -rf /etc/localtime ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime 方法2: linux自动同步时间 vi /etc/crontab 加上一句: 代码如下: 00 0 1 * * root rdate -s time.n

通过PHP修改Linux或Unix口令的方法分享_php技巧

需要的工具和安装: 你必须安装下面的工具和软件: –修改口令的Shell脚本; – Sudo访问权; – Apache or Lighttpd web服务器; – PHP服务端程序. 步骤1:安装可以修改用户口令的shell脚本 该脚本可以实际用于修改Linux用户的口令(已在Linux和FreeBSD测试). 例子: shell脚本代码 #!/bin/sh # \ exec expect -f "$0″ ${1+"$@"} set password [lindex $arg

thinkphp在低版本Nginx 下支持PATHINFO的方法分享_php技巧

最近在用thinkphp做一个项目,基本完成后部署到nginx服务器上才发觉nginx是不支持pathinfo的那么我们如何来处理呢. Nginx环境 在Nginx低版本中,是不支持PATHINFO的,但是可以通过在Nginx.conf(在/usr/local/nginx/conf/nginx.conf或者通过find / | grep nginx.conf来查找位置)中配置转发规则实现:在nginx配置文件中添加: location / { if (!-e $request_filename)

Mac环境下php操作mysql数据库的方法分享_php技巧

Mac本地环境搭建 在Mac系统,我们可以使用MAMP Pro 软件来搭建本地服务器.安装好这款软件,网站的目录在 /Applications/MAMP/htdocs 文件夹里,只需将文件放入该文件夹中,就可以通过http://localhost:8888来访问了,或者通过点击如下红色下划线按钮来快速访问站点. mac系统下安装php,两行即可. brew tap josegonzalez/homebrew-php brew install php54 安装完后配置一下,你就可以使用phpsto

修改PHP的memory_limit限制的方法分享_php技巧

解决这个问题,首先需要查看你的程序是否分配了过多的内存,在程序没有问题的情况下,你可以通过一下方法来增加PHP的内存限制(memory_limit). 检查php的内存限制值 为了查看这个值,你需要建立一个空的php文件,比如view-php-info.php.然后将一下代码贴到里面. <?php phpinfo(); ?> 将这个脚本放到你的Web服务器上,然后在浏览器中调用它.这时你可以看到你的PHP环境配置的信息,其中有一部分是关于"memory_limit"的, 如

浅析linux下apache服务器的配置和管理_php技巧

一.两个重要目录:Apache有两个重要的目录:1.配置目录/etc/httpd/conf:2.文档目录/var/www: 二.两种配置模式:Apache在Fedora下的两种配置方式:文本模式(终端命令行)和图形化配置.两者各有优势:图形化下配置,更容易上手,在文本模式下直接编辑httpd.conf文件,自由性更强些.更直接. 三.Apache服务的启动与关闭Apache服务的停止.启动.关闭可以通过两种模式下进行操作:文本(终端)模式下和图形化界面. 四.终端下的操作如果你想用Linux作为

PHP下几种删除目录的方法总结_php技巧

呵呵,忽然一个朋友问我如何删除目录,比如下面有文件呢,我说用递规呀,他说太慢了.于是就总结出了下面几种办法. 1.递规法: //我提供,好像有点不对,没测试 deleteDir($dir) {  if (rmdir($dir)==false && is_dir($dir)) {   if ($dp = opendir($dir)) {    while (($file=readdir($dp)) != false) {     if (is_dir($file) && $f