Visualizzazione risultati 1 fino 1 di 1

Discussione: Richieste CURL ed errore 500

  1. #1
    Destructor3 non è connesso Neofita
    Data registrazione
    14-11-2006
    Messaggi
    28

    Arrow Richieste CURL ed errore 500

    Salve a tutti, sto facendo uno script che invia numerose richieste CURL verso facebook per il comando remoto di una pagina. C'è già un problema e cioè il cURL funziona una volta si e 4 no a causa dell'infrastruttura, ma per aggirare questo problema ho semplicemente messo un controllo del risultato e, in caso il risultato sia NULL, eseguire nuovamente il codice. All'inizio, usando PHP 5.3, avevo usato un GOTO, ma ho preferito copiare e incollare il codice, più tranquillo diciamo ^^

    Dunque, il problema è che quando fallisce una volta l'invio è tutto ok, riprova, ma se fallisce varie volte, prima di arrivare al quarto o quinto tentativo, il server mi da ERRORE 500 dicendomi di avere un .htaccess malformato, in realtà lo avevo solo per il php 5.3 ma non c'era altro. Ho aggiunto sempre all'htaccess dei valori per aumentare le richieste e il tempo di attesa, ma sempre errore 500. Sono multipli invii di file in parallelo e quindi è un bel carico per il server.

    Codice:
    php_value post_max_size 50M
    php_value upload_max_filesize 50M
    php_value memory_limit 500M
    php_value max_execution_time 259200
    php_value max_input_time 259200
    php_value session.gc_maxlifetime 1200
    Qualche amministratore può aiutarmi? C'è qualche funzione anche a pagamento (con gli altercent, ne ho 75000) che mi permette di avere più richieste, più potenza, o magari un server un pò migliore di questo che si impalla?

    Grazie
    Alessandro

    Ecco il mio codice se qualcuno vede che è sbagliato mi dica come correggerlo (ne ho un altra versione più dinamica, questa funziona ma è copiaincollosa :)

    Codice PHP:

    ///////////////////////////////////////////
    // BATCH UPLOADER FOTO FACEBOOK////////////
    // GENERATORE SMILEY CODES E PARSER CODICI/
    ///////////////////////////////////////////
    // COPYRIGHT 2013, @ALESSANDRO MAURIZIO////
    ///////////////////////////////////////////


    // RICHIESTE FACEBOOK SDK
    require 'facebook/src/facebook.php';

    $facebook = new Facebook(array(
    'appId' => 'NONVELODICO',
    'secret' => 'NONVELODICONONVELODICO',
    'fileUpload' => true
    ));

    // OTTIENE I DATI DALLA FOTO INVIATA E SPEZZATA
    // TEMPORANEAMENTE DATI FIXED, POI VARIABILI

    $orizzontale = 11;
    $verticale = 9;
    $cartella = 6785334;

    // CONFIGURA TOKEN E API

    $token = "NONVELODICONONVELODICONONVELODICONONVELODICONONVELODICONONVELODICO";
    $facebook->setAccessToken($token);

    $me = $facebook->api('/NONVELODICO');

    //Abilita supporto upload (per sicurezza)
    $facebook->setFileUploadSupport(true);

    //Crea un album con richiesta API
    $album_details = array(
    'message'=> 'test album',
    'name'=> 'Test Album'
    );
    $create_album = $facebook->api('/NONVELODICO/albums', 'post', $album_details);

    //Ottiene l'ID dell'album appena creato
    $album_uid = $create_album['id'];

    echo
    "ID ALBUM: ".$album_uid."<br><br>";

    $IDAlbum = $album_uid;


    //////////////// CREAZIONE ALBUM FUNZIONANTE ////////////////


    //////// INVIO BATCH FOTO /////////
    /* VERSIONE CURL DIRETTO - BATCH */

    // MAX 5 MINUTI DI SCRIPT
    set_time_limit(300);

    // CONFIGURA RICHIESTA
    // TEST: SOLO UNA RIGA (11 FILES)
    $batched_request =
    '[

    { "method":"POST", "relative_url":"'
    .$album_uid.'/photos",'.'"body" : "message=0", "attached_files":"file0-0"

    },'
    .'{ "method":"POST", "relative_url":"'.$album_uid.'/photos",'.'"body" : "message=1", "attached_files":"file0-1"

    },'
    .'{ "method":"POST", "relative_url":"'.$album_uid.'/photos",'.'"body" : "message=2", "attached_files":"file0-2"

    },'
    .'{ "method":"POST", "relative_url":"'.$album_uid.'/photos",'.'"body" : "message=3", "attached_files":"file0-3"

    },'
    .'{ "method":"POST", "relative_url":"'.$album_uid.'/photos",'.'"body" : "message=4", "attached_files":"file0-4"

    },'
    .'{ "method":"POST", "relative_url":"'.$album_uid.'/photos",'.'"body" : "message=5", "attached_files":"file0-5"

    },'
    .'{ "method":"POST", "relative_url":"'.$album_uid.'/photos",'.'"body" : "message=6", "attached_files":"file0-6"

    },'
    .'{ "method":"POST", "relative_url":"'.$album_uid.'/photos",'.'"body" : "message=7", "attached_files":"file0-7"

    },'
    .'{ "method":"POST", "relative_url":"'.$album_uid.'/photos",'.'"body" : "message=8", "attached_files":"file0-8"

    },'
    .'{ "method":"POST", "relative_url":"'.$album_uid.'/photos",'.'"body" : "message=9", "attached_files":"file0-9"

    },'
    .'{ "method":"POST", "relative_url":"'.$album_uid.'/photos",'.'"body" : "message=10", "attached_files":"file0-10"


    }]'
    ;


    // CODIFICA MESSAGGIO DA LANCIARE
    $urlCode = urlencode($batched_request);

    // CREA ARRAY DA INVIARE
    $immaginiarray = array(
    );


    // FUNZIONE PUSH ARRAY ASSOCIATIVA
    function array_push_assoc($array, $key, $value){
    $array[$key] = $value;
    return
    $array;
    }

    // WHILE AGGIUNGE ELEMENTI ALL'ARRAY

    $countcolonne = 0;
    //while ($countcolonne <= 11) { // ORIGINALE A 11 COLONNE, RIDOTTO PER TESTING
    while ($countcolonne <= 0) {
    if (
    $countcolonne >= 10) {
    $counter = 0;
    while (
    $counter <= 10) {
    if (
    $counter >= 10) {
    $immaginiarray = array_push_assoc($immaginiarray, 'file'.$countcolonne."-".$counter, '@squares/6785334/img'.$countcolonne.'_'.$counter.'.jpg');
    $counter++;
    } else {
    $immaginiarray = array_push_assoc($immaginiarray, 'file'.$countcolonne."-".$counter, '@squares/6785334/img'.$countcolonne.'_0'.$counter.'.jpg');
    $counter++;
    }
    }
    } else {
    $counter = 0;
    while (
    $counter <= 10) {
    if (
    $counter >= 10) {
    $immaginiarray = array_push_assoc($immaginiarray, 'file'.$countcolonne."-".$counter, '@squares/6785334/img0'.$countcolonne.'_'.$counter.'.jpg');
    $counter++;
    } else {
    $immaginiarray = array_push_assoc($immaginiarray, 'file'.$countcolonne."-".$counter, '@squares/6785334/img0'.$countcolonne.'_0'.$counter.'.jpg');
    $counter++;
    }
    }
    }
    $countcolonne++;
    }

    // DEBUG IMMAGINI ARRAY
    var_dump($immaginiarray);

    // CONFIGURA RICHIESTE CURL
    $curlConfig = array(
    CURLOPT_URL => "https://graph.facebook.com/?batch=$urlCode&limit=35&access_token=$token&method=post",
    CURLOPT_POST => true,
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_CONNECTTIMEOUT => 3000,
    CURLOPT_TIMEOUT => 3000,
    CURLOPT_SSL_VERIFYPEER => false,
    CURLOPT_SSL_VERIFYHOST => 2,
    CURLOPT_POSTFIELDS => $immaginiarray
    );


    // Manda CURL e restituisce risultati o errori

    // PRIMO TENTATIVO
    echo "<br><br>INIZIO PRIMO TENTATIVO.<br><br>";
    $ch = curl_init();
    curl_setopt_array($ch, $curlConfig);
    $result = curl_exec($ch);
    $arrayrisultati = json_decode($result, true);
    curl_close($ch);


    // HA FUNZIONATO? RIPROVA VARIE VOLTE FINCHE' IL RISULTATO NON E' CONFERMATO.

    // SECONDO TENTATIVO
    if ($arrayrisultati == NULL){
    echo
    "<br>PRIMO TENTATIVO FALLITO. RIPROVO.<br><br>";
    $ch = curl_init();
    curl_setopt_array($ch, $curlConfig);
    $result = curl_exec($ch);
    $arrayrisultati = json_decode($result, true);
    curl_close($ch);
    }
    // TERZO TENTATIVO
    if ($arrayrisultati == NULL){
    echo
    "<br>SECONDO TENTATIVO FALLITO. RIPROVO.<br><br>";
    $ch = curl_init();
    curl_setopt_array($ch, $curlConfig);
    $result = curl_exec($ch);
    $arrayrisultati = json_decode($result, true);
    curl_close($ch);
    }
    // QUARTO TENTATIVO
    if ($arrayrisultati == NULL){
    echo
    "<br>TERZO TENTATIVO FALLITO. RIPROVO.<br><br>";
    $ch = curl_init();
    curl_setopt_array($ch, $curlConfig);
    $result = curl_exec($ch);
    $arrayrisultati = json_decode($result, true);
    curl_close($ch);
    }
    // QUINTO TENTATIVO
    if ($arrayrisultati == NULL){
    echo
    "<br>QUARTO TENTATIVO FALLITO. RIPROVO.<br><br>";
    $ch = curl_init();
    curl_setopt_array($ch, $curlConfig);
    $result = curl_exec($ch);
    $arrayrisultati = json_decode($result, true);
    curl_close($ch);
    }

    ///////////////
    // SE IL CODICE HA FUNZIONATO, FOTO INVIATE, PULISCO E OUTPUTTO IL CODICE FINALE
    ///////////////

    if ($arrayrisultati != NULL){

    var_dump($arrayrisultati);

    // PULISCI RISULTATI E OTTIENI ID
    $pulizia = 0;
    while (
    $pulizia < 22 ) {
    $pulisci[$pulizia] = substr_replace($arrayrisultati[$pulizia]["body"], "", 0, 7);
    $puliscifin[$pulizia] = substr_replace($pulisci[$pulizia], "", -46, 46);
    $pulizia = $pulizia + 1;
    }

    echo
    "<br><br><br>";
    echo
    "ID FOTO 1:".$puliscifin[0]."<br>";
    echo
    "ID FOTO 2:".$puliscifin[1]."<br>";
    echo
    "ID FOTO 3:".$puliscifin[2]."<br>";
    echo
    "ID FOTO 4:".$puliscifin[3]."<br>";
    echo
    "ID FOTO 5:".$puliscifin[4]."<br>";
    echo
    "ID FOTO 6:".$puliscifin[5]."<br>";
    echo
    "ID FOTO 7:".$puliscifin[6]."<br>";
    echo
    "ID FOTO 8:".$puliscifin[7]."<br>";
    echo
    "ID FOTO 9:".$puliscifin[8]."<br><br><br>";


    echo
    "SMILEY FINALE:<br><br>[[".$puliscifin[0]."]][[".$puliscifin[1]."]][[".$puliscifin[2]."]][[".$puliscifin[3]."]][[".$puliscifin[4]."]][[".$puliscifin[5]."]][[".$puliscifin[6]."]][[".$puliscifin[7]."]][[".$puliscifin[8]."]][[".$puliscifin[9]."]][[".$puliscifin[10]."]]
    [["
    .$puliscifin[11]."]][[".$puliscifin[12]."]][[".$puliscifin[13]."]][[".$puliscifin[14]."]][[".$puliscifin[15]."]][[".$puliscifin[16]."]][[".$puliscifin[17]."]][[".$puliscifin[18]."]][[".$puliscifin[19]."]][[".$puliscifin[20]."]][[".$puliscifin[21]."]]";

    } else {
    echo
    "<br><br>HO FALLITO CINQUE VOLTE. PROCESSO INTERROTTO.<br><br>";
    }

    NB: QUESTO CODICE QUANDO LANCIATO FUNZIONA UNA VOLTA SI E DUE NO IN PRATICA. SENZA LA RIPETIZIONE OTTENEVO VARIE VOLTE RISULTATI NULL, AGGIUNGENDO LA RIPETIZIONE, SE LE FOTO SONO POCHE, FUNZIONA. QUANDO LE FOTO AUMENTANO, IL SERVER ASPETTA MOLTO E DOPO UN PO MI DA UN ERRORE 500. SONO SICURO NON SIA UN PROBLEMA DEL CODICE PER QUANTO SIA PESANTE!
    Ultima modifica di Destructor3 : 14-06-2013 alle ore 10.11.10 Motivo: aggiunto NB

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •