php 多进程测试并发,php 多进程,测试中

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;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值