2010-08-03 11 views
6

tempo per un altro rompicapo di qualcosa che ritengo sia piuttosto raro.Lo script PHP termina presto, nessuna prova di un errore e timeout impostato su 0

C'è un limite rigido in PHP? O in Apache? Ho avuto una sceneggiatura in esecuzione la scorsa notte che è durata circa 20 ore. Poi si è appena fermato, a metà della sceneggiatura su una riga a caso senza errori che ho trovato.

set_time_limit (0); è stato impostato nella sceneggiatura, ma sto iniziando a chiedermi se c'è un altro limite da qualche altra parte per circa 20 ore ...

qualche idea?

Molte grazie in anticipo.

modifica: viene eseguito come wget.

edit2: Ho intenzione di esaminare il problema della memoria e tornare da te, grazie per l'aiuto finora!

Edit3: Oh vorrei sottolineare questo script è la raccolta dei dati e la memorizzazione in un array, il più lungo è in esecuzione più si sta memorizzando in modo sì, sono un po palmo rivolto verso il "usato tutta la memoria "risposte qui ...

SOLUZIONE: l'impostazione di una memoria più grande per l'operazione ha risolto questo problema. Grazie a tutti.

+0

Cosa stai cercando di fare? – Sarfraz

+0

Hai eseguito come cli o da apache (come mod/cgi)? – NikiC

+0

Nessun reato ma è privato :) È una sceneggiatura che ha bisogno di leggere alcune informazioni, in 20 ore passa attraverso la maggior parte di esso (circa l'85%) ma ha bisogno di più tempo. E non c'è un modo semplice per dividere le informazioni. – Dorjan

risposta

3

Probabilmente il php-cli si è appena arrestato o il server è stato riavviato. Non penso che php sia un problema da eseguire così a lungo

+0

Il fatto che ci fossero più script in esecuzione e gli altri script continuati (erano più brevi in ​​punti diversi) mi mostra che il server non si è bloccato, ma potresti avere ragione sul mancato funzionamento di PHP dopo un certo periodo di tempo. – Dorjan

+2

forse dovresti eseguire lo script dalla riga di comando, invece tramite apache è anche possibile che il consumo di memoria per quello script fosse troppo alto, potresti aumentarlo con ini_set ('memory_limit', '128M'); –

+0

Grazie Christian, guarderò ora l'impostazione corrente – Dorjan

2

ho avuto uno script che ha funzionato per diversi mesi senza problemi. Ho appena dovuto uccidere il processo per terminare la sceneggiatura. quindi non c'è limite se hai set_time_limit (0); nel tuo codice. hai visto il sistema e eseguito il debug dei log del tuo sistema operativo? questo potrebbe fornire ulteriori indizi sul perché php o apache si sia bloccato.

+0

Questo è utile perché ora so che PHP può funzionare così a lungo – Dorjan

0

da quando hai usato wget, presumo che sia in esecuzione sotto apache. forse è apache che ha un limite su uno script in esecuzione e non sulla tua applicazione php.

si potrebbe verificare ciò eseguendo l'applicazione dalla versione cli

+0

Apache Timeout è la direttiva Timeout in httpd.conf. Se non viene specificato alcun valore, il valore predefinito è 300 secondi http://httpd.apache.org/docs/2.0/mod/core.html#timeout –

+0

Purtroppo non ho il tempo di eseguire l'applicazione con rom cli come i percorsi sembrano essere diversi per gli include e simili (non riesco a ricordare perché dovevo allontanarmi da esso ora ma ricordo di aver provato prima il cli way e finire con wget anche se non volevo) – Dorjan

2

come diceva stillstanding, controllare il log di Apache, /var/log/error.log, o in finestre "eventi".

+0

imho ci deve essere un errore nel tuo script, forse hai violato il limite di memoria del php? – a1337q

+0

il limite di memoria del php potrebbe essere il più probabile sospetto! Non ci ho pensato, grazie. – Dorjan

+0

Il controllo dei registri ora anche – Dorjan

-1

controllo php.ini file di trovare max_execution_time apportare modifiche per la parte che ci vuole secondi come ingresso.

ma attenzione nel montaggio php.ini

+0

il limite di tempo è indicato come disabilitato nel post originale. – Dorjan

Problemi correlati