我使用freeGeoIP服务来跟踪谁访问我的网站到我自己的数据库。有时需要一段时间才能检索数据。无论如何,如果花费太长时间,我可以切断数据的检索吗?
这是我的代码:
$geoIP = @file_get_contents("http://freegeoip.net/csv/{$_SERVER['REMOTE_ADDR']}");
`
答案 0 :(得分:3)
您可以创建一个与其一起发送超时的上下文(参考:file_get_contents)
摘录:
$opts = array('http' =>
array(
'method' => 'POST',
'header' => "Content-Type: text/xml\r\n".
"Authorization: Basic ".base64_encode("$https_user:$https_password")."\r\n",
'content' => $body,
'timeout' => 60
)
);
$context = stream_context_create($opts);
$url = 'https://'.$https_server;
$result = file_get_contents($url, false, $context, -1, 40000);
在你的情况下,这应该粗略地转换为(未经测试):
$opts = array('http' =>
array(
'method' => 'GET',
'header' => "Content-Type: text/csv",
'content' => '',
'timeout' => 10
)
);
$context = stream_context_create($opts);
$url = "http://freegeoip.net/csv/{$_SERVER['REMOTE_ADDR']}";
$geoip = file_get_contents($url, false, $context, -1, 40000);
答案 1 :(得分:0)
您可以分叉程序执行:How to fork with PHP (4 different approaches)。
有关PNCL函数(包括fork)的文档可以在PHP Manual。
中找到