如何同时运行php脚本?

如何同时运行php脚本?,php,curl,concurrently,Php,Curl,Concurrently,我想同时运行这段代码。在名为id.txt的目录中有一个txt文件,其中所有参数都替换在下面标题中的Cookie中。如果我通过打开10个cmd标签来运行这个程序,那么这个过程就会变慢。因此,请帮助我如何同时执行此操作或您的任何建议 $i=trim(file("index.txt")[0])+0; $id=file("id.txt")[$i]; $idd=preg_replace('/\s+/', '', $id); file_put_contents(&qu

我想同时运行这段代码。在名为id.txt的目录中有一个txt文件,其中所有参数都替换在下面标题中的Cookie中。如果我通过打开10个cmd标签来运行这个程序,那么这个过程就会变慢。因此,请帮助我如何同时执行此操作或您的任何建议

$i=trim(file("index.txt")[0])+0;
$id=file("id.txt")[$i];
$idd=preg_replace('/\s+/', '', $id);
file_put_contents("index.txt",$i+1);
echo $idd;  
while(true){

$url8 = "https://www.example.com/";
$header= array("Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8",
                 "Accept-Language: en-US,en;q=0.5",
                 "Content-Type: application/x-www-form-urlencoded",
                 "Content-Length: 0",
                 "Cookie: $idd");

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url8);
curl_setopt($ch, CURLOPT_HTTPHEADER,$header);
curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:81.0) Gecko/20100101 Firefox/81.0");
curl_setopt($ch, CURLOPT_HEADER,1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_NOBODY, 1);
$out = curl_exec($ch);
echo "\n";
echo $currentTime = date( 'h i s', time () );
if(preg_match('/done/',$out)){
    die(' done');   
}
}

正如我所看到的,它变得很慢,因为您运行的脚本的所有实例都在同时访问同一个文件,所以在获取访问该文件所需的句柄时会有延迟。您应该使用不同的文件名(例如index1.txt、index1337.txt),并避免使用多个实例写入同一文件


我希望我的回答有帮助:)

正如我所看到的,它会变慢,因为您运行的脚本的所有实例都在同时访问同一个文件,因此在获取访问该文件所需的句柄时会有延迟。您应该使用不同的文件名(例如index1.txt、index1337.txt),并避免使用多个实例写入同一文件


我希望我的回答能有所帮助:)

而不是使用curl您是否有兴趣使用guzzle http来处理您的请求,然后您可以使用guzzle并发发送请求。@bhucho您可以使用
curl\u multi.*
,而不是消耗cpu和资源,@YvesLeBorg我使用了curl multi,但有些请求没有得到处理。@bhucho请帮助我如何通过guzzlehttp:)实现这一点,首先您需要的需求很少(这样您就可以安装guzzle),然后您需要执行composer init它将初始化composer.json文件,然后使用它添加guzzle包。通知您是否已完成此步骤的正常运行。您是否有兴趣使用guzzle HTTP来处理您的请求,然后您可以使用guzzle来同时发送请求。@bhucho您可以使用
curl\u multi.*
,而不是消耗cpu和资源,@YvesLeBorg我使用了curl multi,但有些请求没有得到处理。@bhucho请帮助我如何通过guzzlehttp:)实现这一点,首先您需要的需求很少(这样您就可以安装guzzle),然后您需要执行composer init它将初始化composer.json文件,然后使用它添加guzzle包。通知您是否已完成此步骤。然后我必须将cookie保存到其他txt文件中?但这样做需要花费太多的时间,然后将其提取到标题中的cookie中。然后我必须将cookie保存到另一个txt文件中?但这样做需要花费太多的时间,然后将其提取到标头中的cookie中。