gpt4 book ai didi

php - 多线程PHP函数

转载 作者:行者123 更新时间:2023-12-03 13:04:28 26 4
gpt4 key购买 nike

当前,当我用60个URL执行此功能时,出现HTTP 504错误。无论如何有多线程,这样我就不会再遇到504错误并遍历整个URL列表了吗?

    <?php

namespace App\Http\Controllers;

use Request;
use App\Http\Controllers\Controller;

class MainController extends Controller
{
public function parse()
{
$input = Request::all();
$csv = $input['laraCsv'];
$new_csv = trim(preg_replace('/\s\s+/', ',', $csv));

$headerInfo = [];
//$titles = [];
$csvArray = str_getcsv($new_csv, ",");
$csvLength = count($csvArray);
$i = 0;
while ($i < $csvLength) {

if(strpos($csvArray[$i], '.pdf') !== false) {
print_r($csvArray[$i]);
}
else{
array_push($headerInfo, get_headers($csvArray[$i], 1));
}
//sleep(3);
//echo file_get_contents($csvArray[$i]);
$i++;
}
return view('csvViewer')->with('data', $headerInfo)->with('urls', $csvArray);
}
}

最佳答案

以前我曾经使用过digitalocean,但是如果时间用完,我不确定它们会给出什么错误代码(而且set_time_limit(0);应该已经在您的代码中了)。

看看是否可行:

<?php

function getHeaders($data) {
$curly = array();
$result = array();

$mh = curl_multi_init();

foreach ($data as $id => $url) {
$curly[$id] = curl_init();
curl_setopt($curly[$id], CURLOPT_URL, $url);
curl_setopt($curly[$id], CURLOPT_HEADER, true);
curl_setopt($curly[$id], CURLOPT_NOBODY, true);
curl_setopt($curly[$id], CURLOPT_RETURNTRANSFER, true);
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] = array_filter(explode("\n", curl_multi_getcontent($c)));
curl_multi_remove_handle($mh, $c);
}

curl_multi_close($mh);
return $result;
}

$urls = array(
'http://google.com',
'http://yahoo.com',
'http://doesnotexistwillitplease.com'
);

$r = getHeaders($urls);

echo '<pre>';
print_r($r);

因此,一旦将所有URL放入一个数组中,就可以像 getHeaders($urls);一样运行它。

如果不起作用,请先尝试仅使用3个或4个网址。也是前面提到的 set_time_limit(0);在顶部。

关于php - 多线程PHP函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34167200/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com