分享

php多进程抓取网页 - FF_blog - 专注于web,软件,数据库与服务器方面问题的解决与交流

 十年的十年 2011-06-21

php本身是不支持多进程的,但是在运行程序时可能需要有多进程的程序进行运算和执行。


 

php主要的运行方式有两种,一种是在apache下以模块的形式运行,还有一种就是直接可以命令行的cgi的形式下运行。针对这两种情况,可以写出对应的多进程程序。


 

1.利用apache的进程,来实现php的多进程运算。这里可以用pcntl_fork来产生子进程程序。


 

简单的测试程序:


 

<?php
/**
* 是否对子进程进行监控
*/
$bWaitFlag = false;
/**
* 设定进程数量
*/
$intNum = 3;
/**
* 存取生成进程的数组
*/
$pids = array();
//主进程循环生成子进程
for($i = 0; $i < $intNum; $i++) {
// 产生子进程,而且从当前行之下开试运行代码


 

$pids[$i] = pcntl_fork();
//子进程程序_begin
if(!$pids[$i]) {
//进程调用服务器的页面,进行对叽歪进行数据抓取。
echo "http://www./test.php?page=".$i*10;
fopen("http://www./test.php?page=".$i*10,'r');
//进程程序停止。
exit();
// 子进程进程代码段_End
}
}
?>


 

这只是个简单的测试程序。


 

2.通过命令行的形式产生进程。


 

直接通过php的exec来进行调用和执行php页面。


 

下面也是一个测试程序:


 

<?php

for($i = 1; $i < 10;$i++)
{
   $file_name = 'php /workspace/get_html.php > /dev/null &' ;
   exec($file_name);
}
?>

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多