Apache muhtemelen çünkü php kod bu parça, çöker.

2 Cevap php

I am working on the development of a web based application on codeigniter. I wrote this function to get the timezone data for any city or address.

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;
    }

I am working on Windows 7 and xampp 1.7 (php 5.2.8).
Is there any possible scenario where this piece of code would crash Apache? The application runs fine almost everytime, but I think running this piece of code when there is no internet connectivity or very poor internet connectivity (thereby no access to either of the webservices I have used) brings down the server. Something like this happened a few times and I think it was due to loss of internet connectivity but I am not sure what exactly is going on.

[Bu arada, bu kod parçası kullanmak için çekinmeyin. 2 web servis böylece uygulamada çok sık kullanmayın çağrıları yapar. Bir veritabanında sonuçlarını depolamak düşünün.]

Düzenleme: kodu ve benim uygulama bu parça mükemmel çalışır, almost every time. Sadece birkaç kez, birkaç gün önce Apache çöktü. Ve ben bu sadece o çöker önce eklendi şeylerden biri olarak bu fonksiyon suçlu olduğunu düşünüyorum.

Düzenleme 2: Burada doğru görünmüyor benim apache hata günlüğüne küçük bir pasajı. Bu birkaç kez günlüğünde var, ve ben (aslında oldukça emin) o sunucunun çökmesine karşılık düşünüyorum. Bunun dışında, bir kaç sunucunun çökmesine değil hataları, "dosya yok" vardır

[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?

2 Cevap

Hiçbir hata StackTarace veya hata günlük olduğundan, ben sorunun nedeni olabilir şüpheli:

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

Eğer başka bir web hizmetinden someData almak için çalışıyoruz, bu nedenle bu sorun olabilir çünkü.

Ben böyle o bölümün etrafında bir try / catch koymak, derdi:

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;

Gibi bunu çoğu zaman çalışıyor, dedi. Şimdi bırakın ve bir hafta kadar sonra, geri gelip hata günlüğü sizin için ilginç bir şey varsa bakın.

Apart internet bağlantısı yokluğu allow_url_fopen php.ini dosyasında yanlış ayarlı ise, o iş olmaz ve bu nedenle, file_get_contents işlevi, bir veri almak olmaz url.