public function setGeoCookie()
{
if ($_SERVER['REQUEST_METHOD'] === 'GET') {
if (wp_is_mobile()) {
return false;
}
if (!isset( $_COOKIE['location'])) {
if (false === ($cached = get_transient($_SERVER['REMOTE_ADDR']))) {
$geo = $this->geoAPI->getResult();
$closest_city = $this->sql_get_closest($geo['latitude'], $geo['longitude']);
$closest_location = $closest_city->slug;
set_transient($_SERVER['REMOTE_ADDR'], $location, 3600*24*2 );
setcookie("location", $closest_location, time() + (3600*24*2));
} else {
setcookie("location", $cached, time() + (3600*24*2));
}
}
}
}
所以这段代码在登台工作,它在高峰时间没有在生产上工作,现在它在生产上再次工作,我想知道当计算机需要太长时间来处理脚本时,php脚本是否可能被中断。这个脚本应该在每个GET请求上运行,因此,因为GET请求可能需要一些时间,所以我实际上感到惊讶的是,无论进行多少次GET调用,都不会生成cookie。是否有一种方法可以在生产服务器上调试它,因为我无法在登台服务器上重现错误?
你的问题的答案是肯定的。PHP脚本有运行时间限制,由PHP .ini中的max_execution_time设置。其他超时可能应用于顶部,这取决于您的服务器堆栈和设置。
要收集信息,将日志条目和时间戳一起写入日志文件。