2016-11-02 2 views
0

Ich habe ein Skript in einem Ordner, der keine relevanten Ausführungszeit Grenzen (ich laufe regelmäßig Stunden lang Skripte aus diesem Verzeichnis) mit einer Datei drin. Diese Datei wird aus einem HTML-Formular in einer Codingiter-Ansicht aufgerufen und lädt eine CSV-Datei hoch, liest sie und aktualisiert Datenbankeinträge mit den darin enthaltenen Informationen.PHP-Datei werfen 404 in der Mitte der Ausführung (nach ~ 45 Sekunden)

Wenn ich eine kleinere CSV-Datei (1-1000 Einträge) habe, funktioniert es gut. Alles darüber wird ungefähr 1000 Einträge verarbeiten (einschließlich der Wiedergabe von Debug-Text auf dem Bildschirm) und DANN einen 404-Fehler auslösen.

Ich habe seit dem versucht, den Fehler zu umgehen, indem Sie die Post-Seite einen Ajax-Aufruf machen, aber es tut genau das gleiche.

"NetworkError: 404 Not Found - xxxx/xxxx/xxxxx.php"

Ich habe bestätigt, dass das Skript zu den 404 vor ausgeführt wird durch Änderungen in der Datenbank zu bestätigen und auf dem echo'd Debug-Code zu sehen, Bildschirm.

Code, der ausgeführt wird, wenn es die 404 ... (kurz wirft, Update-ID (erste Spalte) Wert (zweite Spalte) von CSV-Datei.

if(file_exists($targetdir)) 
{ 
$file = fopen($targetdir, 'r'); 
$count = 0; 
while(!feof($file)) 
{ 
    $x = (fgetcsv($file)); 
    if(is_numeric($x[1]) && $x[1] > 9999 && $x[0] != '-') 
    { 
     $count++; 
     // echo "UPDATE xxxx SET xxxxx ='".$x[0]."' WHERE id=".$x[1]; 
     $db->query("UPDATE xxxx SET xxxxx ='".$x[0]."' WHERE id=".$x[1]); 
     //echo $x[1].' - '.$x[0]."<br/>"; 

    } 
} 
fclose($file); 
} 

bearbeiten Es Sieht so aus, als ob Jquery den Fehler ausgibt? Ich habe gegoogelt und gesehen, dass Leute sagen, dass es eine Servereinstellung ist (aber nicht welche Servereinstellung, also setze ich die maximale Ausführungszeit auf 300s und habe die gleichen Ergebnisse)

xxxxx.php 404 xhr jquery-1.12.4.min.js: 4 1.6 KB 40.07

Image of 404 rendering after text is echo'd

+2

Ich bezweifle, dass es der PHP-Code ist. Sie müssten die Serverkonfiguration überprüfen. Ein PHP-Skript wird nicht zufällig ein 404 auswerfen, wenn Sie es nicht explizit angeben. wahrscheinlich beendet der Server es für die Überschreitung der Ausführungszeitgrenzen, aber warum das als 404 angezeigt wird, ist ... komisch. –

+0

Hören Sie das Twilight Zone-Thema, wenn dies passiert? Möglicherweise ist der Server falsch konfiguriert und gibt einen 404, wenn es einen 408 schicken soll? –

+0

Ich untersuche es jetzt, aber es würde einen 408 in einer kurzen Zeit im Vergleich zu einigen anderen Skripten werfen, die laufen? Ich spreche in einer Minute im Vergleich zu einigen Skripten, die für fast eine Stunde ohne Problem laufen ... Danke! –

Antwort

0

konnte ich die Einstellung finden, die Auslösung wurde. Anstatt die standardmäßige Ausführungszeit von php max zu verwenden, wurde die Zeitüberschreitung von den FastCGI-Einstellungen beeinflusst. Entweder von AJAX-Posting oder von der Leseoperation.

In beiden Fällen erhöhte ich FcgidIOTimeout in meinen Apache-Einstellungen auf dem Server und konnte das vollständige Skript ausführen.