码迷,mamicode.com
首页 > Web开发 > 详细

php 多进程,测试中

时间:2017-10-16 18:08:44      阅读:238      评论:0      收藏:0      [点我收藏+]

标签:com   handle   /usr   rom   result   use   mozilla   array   popen   

for($i = 0; $i < 10; $i++)
{
$iPid = pcntl_fork();
if($iPid == -1)
{
die(‘can\‘t be forked.‘);
}

if($iPid)
{
# 主进程逻辑
echo $i."\r\n";
// exit();
}
else
{
# 子进程逻辑
$iPid = posix_getpid(); # 获取子进程的ID
$rlt=system(‘/usr/bin/php -f /home/wwwroot/seo/test_shell.php &‘.$i);
// print_r($rlt);
exit();
}
}
exit();

pclose(popen("/home/xinchen/backend.php &", ‘r‘)); // 多线程
pclose(popen("/usr/local/php/bin/php /htdocs/www/site/task.php &", "r"));
//curl_multi实现多线程爬虫的示例

$mh = curl_multi_init(); //返回一个新cURL批处理句柄
for ($i = ; $i < $max_size; $i++)
{
$ch = curl_init(); //初始化单个cURL会话
curl_setopt($ch, CURLOPT_HEADER, );
curl_setopt($ch, CURLOPT_URL, ‘http://www.zhihu.com/people/‘ . $user_list[$i] . ‘/about‘);
curl_setopt($ch, CURLOPT_COOKIE, self::$user_cookie);
curl_setopt($ch, CURLOPT_USERAGENT, ‘Mozilla/. (Windows NT .; WOW) AppleWebKit/. (KHTML, like Gecko) Chrome/... Safari/.‘);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, );
$requestMap[$i] = $ch;
curl_multi_add_handle($mh, $ch); //向curl批处理会话中添加单独的curl句柄
}
$user_arr = array();
do {
//运行当前 cURL 句柄的子连接
while (($cme = curl_multi_exec($mh, $active)) == CURLM_CALL_MULTI_PERFORM);
if ($cme != CURLM_OK) {break;}
//获取当前解析的cURL的相关传输信息
while ($done = curl_multi_info_read($mh))
{
$info = curl_getinfo($done[‘handle‘]);
$tmp_result = curl_multi_getcontent($done[‘handle‘]);
$error = curl_error($done[‘handle‘]);
$user_arr[] = array_values(getUserInfo($tmp_result));
//保证同时有$max_size个请求在处理
if ($i < sizeof($user_list) && isset($user_list[$i]) && $i < count($user_list))
{
$ch = curl_init();
curl_setopt($ch, CURLOPT_HEADER, );
curl_setopt($ch, CURLOPT_URL, ‘http://www.zhihu.com/people/‘ . $user_list[$i] . ‘/about‘);
curl_setopt($ch, CURLOPT_COOKIE, self::$user_cookie);
curl_setopt($ch, CURLOPT_USERAGENT, ‘Mozilla/. (Windows NT .; WOW) AppleWebKit/. (KHTML, like Gecko) Chrome/... Safari/.‘);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, );
$requestMap[$i] = $ch;
curl_multi_add_handle($mh, $ch);
$i++;
}
curl_multi_remove_handle($mh, $done[‘handle‘]);
}
if ($active)
curl_multi_select($mh, );
} while ($active);
curl_multi_close($mh);
return $user_arr;

php 多进程,测试中

标签:com   handle   /usr   rom   result   use   mozilla   array   popen   

原文地址:http://www.cnblogs.com/microtiger/p/7677674.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!