PHP变量url耗时,PHP file_get_contents使用完整的url时速度很慢

我还会考虑与卷曲是你可以“线程”的请求。这对我非常有帮助,因为我无法访问目前允许线程化的PHP版本。

例如,我使用file_get_contents从远程服务器获取7个图像,每个请求需要2-5秒。单独这个过程就会在过程中增加30秒或某些东西,而用户等待生成PDF。

这从字面上缩短了大约1张图片的时间。另一个例子,我在之前做的一个时间里验证了36个网址。我认为你说对了。:-)

$timeout = 30;

$retTxfr = 1;

$user = '';

$pass = '';

$master = curl_multi_init();

$node_count = count($curlList);

$keys = array("url");

for ($i = 0; $i < $node_count; $i++) {

foreach ($keys as $key) {

if (empty($curlList[$i][$key])) continue;

$ch[$i][$key] = curl_init($curlList[$i][$key]);

curl_setopt($ch[$i][$key], CURLOPT_TIMEOUT, $timeout); // -- timeout after X seconds

curl_setopt($ch[$i][$key], CURLOPT_RETURNTRANSFER, $retTxfr);

curl_setopt($ch[$i][$key], CURLOPT_HTTPAUTH, CURLAUTH_ANY);

curl_setopt($ch[$i][$key], CURLOPT_USERPWD, "{$user}:{$pass}");

curl_setopt($ch[$i][$key], CURLOPT_RETURNTRANSFER, true);

curl_multi_add_handle($master, $ch[$i][$key]);

}

}

// -- get all requests at once, finish when done or timeout met --

do { curl_multi_exec($master, $running); }

while ($running > 0);

然后检查了结果:

if ((int)curl_getinfo($ch[$i][$key], CURLINFO_HTTP_CODE) > 399 || empty($results[$i][$key])) {

unset($results[$i][$key]);

} else {

$results[$i]["options"] = $curlList[$i]["options"];

}

curl_multi_remove_handle($master, $ch[$i][$key]);

curl_close($ch[$i][$key]);

然后关闭文件:

curl_multi_close($master);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值