使用PHP发送请求而不获得响应

时间:2012-01-25 13:59:00

标签: php performance curl

也许这是一个简单的问题,但我没有在网上找到答案。

我的远程脚本在我打开时起作用

http://www.example.com/do_it.php

我无法包含它,导致此页面可能会产生致命错误,可能需要很长时间才能加载。

我需要以最快和最简单的方式从php加载该页面。

现在我正在做

$ch = curl_init($url);
curl_setopt($ch,CURLOPT_CONNECTTIMEOUT, 5);
curl_setopt($ch,CURLOPT_RETURNTRANSFER,$withReturn);
$execute = curl_exec($ch);

但是这个脚本会得到响应,因此它会比只返回标题的脚本花费更多的时间,或者不返回任何内容。

这是更好的方法吗?

如果它有助于do_it.php在我需要调用它的同一台服务器上。

2 个答案:

答案 0 :(得分:2)

我认为执行请求而不是等待响应的可能解决方案是使用php.net/curl_multi_exec然后避免解析响应。另一种方法是使用套接字,打开与脚本的连接,写入请求然后关闭连接而不准备响应。

示例curl脚本: https://github.com/vrana/php-async/blob/master/CurlAsync.php

套接字方法的示例用法:

$fp = fsockopen('example.com', 80, $errno, $errstr, 30);

$out = "GET /do_it.php HTTP/1.1\r\n";
$out.= "Host: example.com\r\n";
$out.= "Content-Type: application/x-www-form-urlencoded\r\n";
$out.= "Connection: Close\r\n\r\n";

fwrite($fp, $out);
fclose($fp);

以上示例未经测试,并作为起点提供。

答案 1 :(得分:1)

最快的方法是检查所有方法。有

CURL - curl_exec()

套接字 - fsockopen()

如果您只想下载该do_it.php页面的响应,请使用get_file_contents()。