2015-04-24 8 views
8

Ich habe Codeigniter-Framework in meinem Projekt. Meine Website läuft auf Windows Azure-Plattform. Manchmal ist es mir diesen Fehler geben:PHP Schwerwiegender Fehler: Fehler in Wincache (Windows Azur)

PHP Fatal error: Failure in Wincache[6484] free_memory: Block 0x41d56d8 not in use in D:\home\site\wwwroot\system\libraries\Log.php on line 44

Ich habe versucht, php.ini zu ändern, indem Wert des Speichers zu ändern:

ini_set('memory_limit','2048M'); 

Aber dann, nachdem ich überprüfte memory_get_peak_usage(); dann fand ich, dass die Anwendung ist nicht einmal mit mehr als 1MB. Ich weiß nicht, was hier vor sich geht. Ich bekomme eine leere Seite und die Webseite geht runter, wenn das passiert.

Bitte fragen Sie mich, wenn Sie weitere Informationen oder Code benötigen.

log.php:

public function __construct() 
{ 
    $config =& get_config(); 

    $this->_log_path = ($config['log_path'] != '') ? $config['log_path'] : APPPATH.'logs/'; 

    if (! is_dir($this->_log_path) OR ! is_really_writable($this->_log_path)) // This is line 44. 
    { 
     $this->_enabled = FALSE; 
    } 

    if (is_numeric($config['log_threshold'])) 
    { 
     $this->_threshold = $config['log_threshold']; 
    } 

    if ($config['log_date_format'] != '') 
    { 
     $this->_date_fmt = $config['log_date_format']; 
    } 
} 

log.php Datei ist standardmäßig codeigniter Datei.

ENDLÖSUNG:

Ich habe meine php.ini Datei mit diesem Update:

wincache.fcenabled=0 
wincache.ocenabled=0 
wincache.ucenabled=0 
wincache.reroute_enabled = 0 
wincache.srwlocks = 0 
+0

Welchen Webserver verwenden Sie, Apache, IIS, andere? Was ist in Zeile 44 der Datei D: \ home \ site \ wwwroot \ system \ libraries \ Log.php? –

+0

Dies zeigt an, dass WinCache versucht hat, einen Speicherblock im prozessübergreifenden Shared-Memory-Segment doppelt freizugeben. –

+0

@RolandoIsidoro: Ich benutze Windows azurblau. Und ich habe meine Frage aktualisiert. –

Antwort

3

Es ist ein Problem mit IIS oder WinCache auf Windows Server. Sie können official thread in einem Forum verfolgen. Nur sicher sein, überprüfen Sie folgende Optionen in der php.ini:

wincache.reroute_enabled = 0 
wincache.srwlocks = 0 

Auch WinCache auf eine aktuelle Version aktualisieren.

+0

Ich habe die php.ini-Datei aktualisiert. Jetzt muss ich auf den nächsten Fehler warten. Weil es nur manchmal passiert. Früher würde es so sein. Können Sie mir bitte erklären, was dieser Fehler ist und was der mögliche Grund dafür sein könnte? –

+0

@RonakPatel Nach dem Update auf 1.3.7 Die Umleitungsfunktion Feature wurde aktiviert. In einer Dateioperation, die zum Deathlock führte, ist ein Fehler aufgetreten. Ihr Logger stoppt also manchmal und Clients erhalten einen HTTP-Fehler von 500. – vanadium23

+0

Ich bin über die Version von php_wincache.dll – vanadium23

0

Die spezifische WinCache-Fehlermeldung wurde ab WinCache 1.3.7.5 entfernt, die in einem kürzlich aktualisierten Azure Web Services-Update ausgegeben wurde.

Zur Bedeutung der Fehlermeldung: Beim Versuch, einen Speicherblock in einem prozessübergreifenden freigegebenen Speichersegment freizugeben, erkannte WinCache, dass der Block bereits freigegeben wurde. Die Nachricht zeigt an, dass WinCache das Problem erkannt hat und vermieden Speicher beschädigt. Die Nachricht sollte wirklich eine Warnmeldung sein. Außerdem sollte die ausführende Anforderung vollständig ausgeführt werden, und eine Antwort sollte an den Kunden zurückgegeben werden.

Vor WinCache 1.3.7.4, WinCache tat nicht erkennen dieses Szenario, und würde wickeln korrumpierenden Speicher, die schließlich zu einem AV führen würde. Die Fehlermeldung zeigt also an, dass WinCache Sie gerade vor dem Absturz bewahrt hat, und Sie sind herzlich willkommen!

+0

Ja. Ich bekomme nur eine Benachrichtigung darüber. :) –

Verwandte Themen