Visualizzazione dei risultati da 1 a 7 su 7
  1. #1

    script PHP con tempo di esecuzione illimitato

    Buongiorno a tutti,

    prima di tutto spero di aver postato nel luogo giusto e di non aver infranto le regole del forum. Avrei bisogno di un aiuto relativamente ad uno script php che ho realizzato. Lo script in questione è una rete neurale che acquisisce dati da alcuni file xls e li elabora al fine di minimizzare l'errore tra i dati che ha caricato. Una volta fatto lo script salva i risultati (i pesi dei vari neuroni) all'interno di un altro file il quale viene utilizzato per le simulazioni successive. Quello che mi interessa è riuscire a dare il tempo necessario al primo script ad eseguire tutte le operazioni richieste, il che dovrebbe essere intorno ai due giorni.

    Quello che sono riuscito ad ottenere (ma adesso non più) è un tempo di esecuzione pari a circa 1 giorno e mezzo.
    Le modifiche per riuscire ad attivare un così lungo tempo di esecuzione sono state:

    -Modifiche al file php.ini:
    max_execution_time = 0
    max_input_time = -1
    memory_limit=1024M
    - Modifiche al file metabase.xml:
    CGITimeout="259200"

    il tempo relativo al timeout del CGI è pari a 3 giorni (anche se non ci sono mai arrivato). Attualmente però con questa configurazione non riesco nemmeno a superare un tempo di esecuzione pari ad 1 ora. E sinceramente non capisco perchè?

    Ovviamente, anche nel file php della rete neurale ho impostato il timeout con set_time_limit(0);


    Ringrazio in anticipo qualsiasi persona che possa darmi consigli su come procedere.

    Leonardo

  2. #2
    per giorni non ho mai fatto girare uno script, almeno non in php... secondo alcuni basta set_time_limit a -1, oppure di lanciare lo script da CLI perchè da CLI il max_execution_time non ha effetto (mai testato eh...)

    certo che pure te a complicarsi la vita...ma fare un programmino idiota in java con una classe Thread che faceva il lavoro no? Che poi, non ho fatto reti neurali lo ammetto, ma uno script che ci impiega due giorni per fare una elaborazione deve essere fatto in una certa maniera... per esempio, prova a suddividere il lavoro da mandare in esecuzione su più thread, più processi, sfruttare programmazione parallela magari con cuda o simile, insomma non mi pare che tu stia facendo una cosa proprio banalissima

    ps: sicuro che non raggiunga il memory_limit?
    IP-PBX management: http://www.easypbx.it

    Old account: 2126 messages
    Oldest account: 3559 messages

  3. #3
    Ciao Santino83_02,

    grazie mille per la risposta. Lo so che mi stò complicando un po la vita, però per adesso questa è l'unica soluzione che ho trovato. Quello che è strano è che fino a qualche giorno fa il tempo di esecuzione era circa 1 giorno e mezzo poi nel tentativo di aumentare ancora devo di sicuro aver cambiato qualche cosa che adesso mi fa terminare il tempo di esecuzione dopo un'ora.

    Spezzettare in più thread penso non sia possibile. Considera che questa lo script genera inizialmente un valore di output in maniera random, successivamente, tramite i dati che prende dai file xls, comincia a ridurre l'errore tra quello che lui ha generato e quello che dovrebbe ottenere. Per questo motivo mi verrebbe da pensare che il processo debba essere unico (poi se mi sbaglio sono "pronto" a modificare al codice!).

    Il tempo di calcolo è dovuto al fatto che più dati ha in ingresso e più tempo ci mette a minimizzare l'errore. E qui stà il problema, ho la necessità di mandargli molti dati per ottenere successivamente il risultato sperato.

    Anche io avevo pensato al memory_limit, l'ho impostato a 1024M ma il problema rimane.

    Che sia un problema dovuto alle impostazioni di IIS?


    Leonardo

  4. #4
    non richiamarlo da browser, richiamalo da CLI e soprattutto non su un ambiente microsoft ma su un ambiente *NIX...caricati una macchina virtuale con una distro linux e fai li il test
    IP-PBX management: http://www.easypbx.it

    Old account: 2126 messages
    Oldest account: 3559 messages

  5. #5
    ok......cerco di seguire passo passo i tuoi consigli!
    sto scaricando virtual box e ubunto 11.10....corretto?

    Cosa intendi per CLI?????

    Scusa ma su alcune cose non sono molto pratico!!

  6. #6
    invece di chiamarlo dal browser (quindi passando da IIS/APACHE) in una shell scrivi "php /path/to/file.php"

    es:

    Codice PHP:

    //test.php


    <?php

    $times 
    0;

    while(
    1){
    $times++;
    echo 
    "volta numero $times\n";
    sleep(5);
    }

    ?>
    e lo richiami con

    codice:
    php /path/to/test.php
    conta che il max_execution_time non incide, dovrebbe giusto continuare a valere il memory_limit
    IP-PBX management: http://www.easypbx.it

    Old account: 2126 messages
    Oldest account: 3559 messages

  7. #7
    Ok.....

    stò scaricando ubuntu.....ma ci vorrà un po.

    Nel frattempo ho lanciato dalla shell di windows (lo so che mi avevi detto di non usare windows, ma nel frattempo volevo almeno provare..) il file php.

    Appena ho un risultato (Speriamo) ti faccio sapere.

    Se nel caso ti venisse in mente altro fammi sapere.

    Grazie mille per adesso

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.