gpt4 book ai didi

php - Apache 崩溃,可能是因为这段 php 代码。你能看看吗?

转载 作者:搜寻专家 更新时间:2023-10-31 21:46:21 25 4
gpt4 key购买 nike

我正在 codeigniter 上开发基于 Web 的应用程序。我编写此函数是为了获取任何城市或地址的时区数据。

function gettimezone($address)
{
$_url = 'http://api.local.yahoo.com/MapsService/V1/geocode';
$_url .= sprintf('?appid=%s&location=%s',"phpclasses",rawurlencode($address));
$_result = false;
if($_result = file_get_contents($_url)) {
preg_match('!<Latitude>(.*)</Latitude><Longitude>(.*)</Longitude>!U', $_result, $_match);
$lng = $_match[2];
$lat = $_match[1];
$url = "http://ws.geonames.org/timezone?lat={$lat}&lng={$lng}";
$timedata = file_get_contents($url);
$sxml = simplexml_load_string($timedata);
return $sxml->timezone;
}
else
return false;
}

我正在使用 Windows 7 和 xampp 1.7 (php 5.2.8)。
这段代码是否会导致 Apache 崩溃?该应用程序几乎每次都运行良好,但我认为在没有互联网连接或互联网连接非常差(因此无法访问我使用的任何一个 Web 服务)时运行这段代码会导致服务器崩溃。类似的事情发生过几次,我认为这是由于互联网连接中断造成的,但我不确定到底发生了什么。

[ 顺便说一句,请随意使用这段代码。进行 2 次 Web 服务调用,因此不要在您的应用程序中使用得太频繁。考虑将结果存储在数据库中。]

编辑:这段代码和我的应用程序运行良好,几乎每次。几天前它刚刚使 Apache 崩溃了几次。我认为它的这个功能是罪魁祸首,因为这是在崩溃之前添加的东西之一。

编辑 2:这是我的 apache 错误日志的一小段,看起来不正确。这在日志中出现了几次,我认为(实际上非​​常确定)它对应于服务器崩溃。除此之外,还有一些“文件不存在”错误,不会导致服务器崩溃

[Mon May 24 12:14:26 2010] [notice] Parent: child process exited with status 3221225477 -- Restarting.
[Mon May 24 12:15:29 2010] [warn] pid file c:/xampp/apache/logs/httpd.pid overwritten -- Unclean shutdown of previous Apache run?

最佳答案

由于没有Error StackTarace和错误日志,我怀疑问题的原因可能是:

 $url = "http://ws.geonames.org/timezone?lat={$lat}&lng={$lng}";

因为您正在尝试从另一个网络服务获取一些数据,所以这可能是问题所在。

我会说,像这样在该部分周围放置一个 try/catch:

try
{
$url = "http://ws.geonames.org/timezone?lat={$lat}&lng={$lng}";
$timedata = file_get_contents($url);
$sxml = simplexml_load_string($timedata);
}
catch(Exception $e)
{
// log this exception to file
}
return $sxml->timezone;

正如您所说,它大部分时间都有效。所以现在离开它,大约一周后,回来查看错误日志是否包含您感兴趣的内容。

关于php - Apache 崩溃,可能是因为这段 php 代码。你能看看吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2934980/

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