失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > php 防止curl并发-文件锁

php 防止curl并发-文件锁

时间:2021-01-07 23:18:54

相关推荐

php 防止curl并发-文件锁

如果出现多个curl请求同时进行,导致数据库重复插入数据的情况,可以通过文件锁来防止重复插入数据库,实现代码如下:

//文件锁防止进程重复并发$folder = '/tmp';$lock = $folder . "/send_count.lock";$fp = fopen($lock, 'c');if(!flock($fp, LOCK_EX | LOCK_NB)){exit('其他进程正在运行中');}/*** 所需执行的代码** *///执行完后关闭文件,防止堵塞fclose($fp);

测试文件锁的效果可以使用以下代码,进行测试:

//实现并发curl请求函数function multiRequestUrl($url, $multi_num = 2) {$curly = array();$result = array();$mh = curl_multi_init();$data = [];$data = array_pad($data,$multi_num,$url);foreach ($data as $id => $d) {$curly[$id] = curl_init();$url = $d;curl_setopt($curly[$id], CURLOPT_URL, $url);curl_setopt($curly[$id], CURLOPT_HEADER, 0);curl_setopt($curly[$id], CURLOPT_RETURNTRANSFER, 1);curl_multi_add_handle($mh, $curly[$id]);}$running = null;do {curl_multi_exec($mh, $running);} while($running > 0);foreach($curly as $id => $c) {$result[$id] = curl_multi_getcontent($c);curl_multi_remove_handle($mh, $c);}curl_multi_close($mh);return $result;}//指定并发次数$multi_num = 2;//并发测试$re = multiRequestUrl($url,$multi_num);//打印并发结果var_dump($re);

如果觉得《php 防止curl并发-文件锁》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。