Sono l'unico amministratore del database. Voglio eseguire uno script una tantum che in pratica richiede circa 3800 immagini scansionate (crescerà fino a 10.000.000) e creare un paio di miniature per ogni immagine usando la funzione exec() di PHP per eseguire il programma imagemagick esterno per creare quelle miniature.Errore di tempo di esecuzione massimo nello script PHP, è una buona soluzione per aggirarlo?
Ho creato la sceneggiatura, l'ho lanciata e tutto funziona perfettamente! Tutto è fatto sul mio server di sviluppo locale. La sceneggiatura impiega circa 11 minuti per creare migliaia di miniature. È un'operazione che viene eseguita una volta ogni due anni, quindi le conseguenze sono minime.
Fin qui tutto bene. Ecco quando mi imbatto in problemi.
Tutto ciò che ho fatto sul mio server di sviluppo locale l'ho fatto sul server live a scopo di test. Ho un account host condiviso con hostgator. L'esecuzione del mio script di 11 minuti su un host condiviso mi dà l'errore "Tempo di esecuzione massimo di 30 secondi superato ...". Ho fatto la mia ricerca, ho provato molte delle soluzioni trovate in questo post (Increase max execution time for php) solo per rendermi conto che non c'è nulla che io possa fare per modificare il tempo massimo di esecuzione di uno script su un host condiviso.
Sono bloccato. Quindi, la mia domanda è qual è la soluzione ovvia qui.
Stavo pensando di avviare lo script per ogni 200 immagini, aggiornare automaticamente la pagina ed eseguire nuovamente lo script per le prossime 200 immagini e così via fino a quando non ci saranno più immagini. In questo modo sono sicuro che i 30 secondi massimi di esecuzione consentiti sul mio host condiviso sono rispettati. Sembra una soluzione giusta in cima alla mia testa, ma non sono sicuro se questo è un NO NO, se ho intenzione di imbattersi in problemi più grandi, troppi negativi ..
È questo l'ovvio soluzione? Qualcuno incontra lo stesso problema? Cosa suggerite voi ragazzi?
Grazie
Perché è necessario creare miniature ogni anno? Non dovrebbe essere sufficiente creare una volta l'immagine originale per creare l'anteprima e lasciarla per sempre (fino a quando non è obsoleta)? –
Hai controllato se l'esecuzione in modalità CLI non ha tempo di esecuzione? Normalmente per gli script CLI c'è '0' (nessun limite) per max_execution_time - http://php.net/manual/en/info.configuration.php # ini.max-execution-time – codedge
un sacco di host condivisi interromperà uno script di lunga durata, non importa cosa fai - quindi controlla prima quello –