Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 14
  1. #1
    Utente di HTML.it
    Registrato dal
    May 2012
    Messaggi
    776

    Problema con il cURL? Ogni tanto non trova un file.

    Ciao a tutti,

    ho un hosting linux.

    Sto usando un framework realizzato da me.
    Una delle prime cose che carica il mio codice php e' un file dal nome Vista_.php tramite il cURL (tutte le pagine caricano questo file), se non lo trova, restituisce una stringa (tramite un semplice echo):
    #ERROREDELLAPAGINA#
    e termina il programma.

    Ovviamente questo file non manca, il sito e' in produzione da circa 8 mesi, ma alcune volte il file non viene trovato, il problema l'ho notato in queste ultime 2 settimane.
    Ma la cosa strana e' che ho fatto delle prove con l'assistenza tecnica, mentre a me dava l'errore,a loro la pagina si caricava correttamente (vedevo con google analytics che effettivamente funzionava).
    Ho provato, mentre io avevo il problema su un computer desktop, a caricare tramite il cellulare una pagina del sito e funzionava correttamente.
    Un altro utente ha manifestato pero' lo stesso problema (quindi il problema non e' solo mio), dai log del server il file Vista_.html non ha mai dato errore.

    Il codice che carica il file e' il seguente:
    Codice PHP:
      protected function getFicheroCurl($nombreFichero) {
            
    $url self::DIREZIONESITO "/vista/" $nombreFichero;
            
    $ch curl_init($url);

            
    curl_setopt($chCURLOPT_RETURNTRANSFER1);

            
    curl_setopt($chCURLOPT_HEADER0);
            
    $res curl_exec($ch);

            
    //var_dump($res);
            
    $httpCode curl_getinfo($chCURLINFO_HTTP_CODE);
            
    curl_close($ch);
            
    //var_dump($httpCode);
            
    if ($httpCode == 200) {
                return 
    $res;
            } else {
                return 
    FALSE;
            }
        } 
    Avete qualsiasi suggerimento, un punto di partenza, dove andare a "sbattere la testa"?
    ...non so veramente da dove partire.

    Grazie,
    Roberto

  2. #2
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,505
    Intanto il file nella descrizione lo chiami una volta Vista_.php e una volta .html, ma magari è solo una svista.
    Il problema con cUrl potrebbe essere di lentezza o qualche altro problema sul collegamento, tipo interferenze sulla linea.
    Se il file in questione sta sullo stesso dominio del sito, io rivedrei il sistema per richiamarlo usando un più semplice include()

  3. #3
    Utente di HTML.it
    Registrato dal
    May 2012
    Messaggi
    776
    Quote Originariamente inviata da Alhazred Visualizza il messaggio
    Intanto il file nella descrizione lo chiami una volta Vista_.php e una volta .html, ma magari e' solo una svista.
    Il problema con cUrl potrebbe essere di lentezza o qualche altro problema sul collegamento, tipo interferenze sulla linea.
    Se il file in questione sta sullo stesso dominio del sito, io rivedrei il sistema per richiamarlo usando un pi� semplice include()
    Innanzi tutto grazie della risposta, per quanto riguarda il nome, s�, � stata una svista, il file si chiama Vista_.html e non .php, chiedo scusa!

    Ti spiego come ho fatto:

    All'interno di un metodo in una classe astratta, ho un metodo che si chiama render() che si occupa di generare il codice html finale.
    Questo metodo carica il file Vista_.html
    Il file Vista_.html contiene solo ed esclusivamente codice html e parole con due tipi di pattern:
    #PAROLADATRADURRE#
    #M_METODODAESEGUIRE#
    Come prima cosa, nel metodo render() vengono cercate tutte le parole contenute tra i cancelletti # che iniziano con M_ e vengono sostitute con il metodo corrispondente del controller (il codice html che restituiscono suddetti metodi).
    Mentre, tutte le parole tra due cancelletti vengono tradotte a seconda della lingua scelta dall'utente.
    Esempio:
    codice HTML:
    <html lang="#M_GETLINGUAPAGINA#">>
    <head>
    <title>#M_GETTITOLOPAGINA#</title>
    </head>
    <body>
                  #SALUTO#, #M_GETUTENTE#
    </body>
    </html>
    Il metodo render resituir�:
    codice HTML:
    <html lang="it">>
    <head>
    <title>Questa e' una prova</title>
    </head>
    <body>
                  Ciao, Roberto
    </body>
    </html>
    Ovviamente ho delle viste, sempre in html, specifiche a seconda del controller utilizzato, i file di queste viste vengono caricate, sempre con il cURL, a seconda della pagina (controller) richiesta dall'utente.
    Ecco perche' ho la necessita' di caricare con il cURL suddetti file .html, con l'include non posso ottenere lo stesso risultato, vero?

    Quando dici:
    "Il problema con cUrl potrebbe essere di lentezza o qualche altro problema sul collegamento, tipo interferenze sulla linea".
    Che cosa mi suggerisci di fare in questo caso, dal momento che il problema si e' manifestato solo nelle ultime 2 settimane in modo random?
    ...oltre al fatto che, ho provato, quando a me dava il problema, chiedere ad un amico di connetersi e a lui non dava lo stesso problema, ovvero il sito funzionava correttamente queando a me, nello stesso istante, non funzionava, mi e' successo anche che 5 persone navigavano correttamente e io no, le stavo vedendo con google analytics!
    Ah, il problema, quando inizia, si manifesta per 5/10 minuti e poi ritorna tutto normale!

    Potrebbere dipendere dalla zona di accesso, ip, velocit� di connessione, mi consigli di cambiare hosting (pago attualmente 4 euro al mese)?

    Grazie,
    Roberto

  4. #4
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,505
    Le cause che hai scritto alla fine sono le stesse che ti ho proposto nella mia prima risposta, quindi sì, potrebbe essere anche una di queste cose, ma dirti quale e come risolvere se davvero dipende da questo non mi è possibile.

    Comunque, per me il vero problema resta l'uso di cURL per prendere dati dal dominio stesso in cui si trova il sito, non si fa, in tali casi si usa include o require.

  5. #5
    Utente di HTML.it
    Registrato dal
    May 2012
    Messaggi
    776
    Quote Originariamente inviata da Alhazred Visualizza il messaggio
    Le cause che hai scritto alla fine sono le stesse che ti ho proposto nella mia prima risposta, quindi sì, potrebbe essere anche una di queste cose, ma dirti quale e come risolvere se davvero dipende da questo non mi è possibile.

    Comunque, per me il vero problema resta l'uso di cURL per prendere dati dal dominio stesso in cui si trova il sito, non si fa, in tali casi si usa include o require.
    Ho una novità.
    Provando da un sito che permette la navigazione anonima, quando dal mio computer dava il problema, mi é apparso questo errore:

    The requested resource could not be loaded. libcurl returned the error:
    Connection timed out after 8001 milliseconds

    Cosa significa, c'e' modo di risolverlo?


    Grazie,
    Roberto
    Ultima modifica di robynosse; 02-06-2016 a 21:44

  6. #6
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,505
    Significa "collegamento lento", non si risolve lato codice... a parte evitando l'uso di cURL...

  7. #7
    Utente di HTML.it
    Registrato dal
    May 2012
    Messaggi
    776
    Quote Originariamente inviata da Alhazred Visualizza il messaggio
    Significa "collegamento lento", non si risolve lato codice... a parte evitando l'uso di cURL...
    Oki, capito!

    In php posso fare una cosa del genere, ovvero mettere quello che ottengo dall'include in una variabile?
    Codice PHP:
    $html=include'Vista.php';//ci sarà solo codice html
    $codiceJavaScript=include'codicejavascript.php';//ci sara' solo codice JS 
    Grazie,
    Roberto

  8. #8
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,505
    Se devi fare così usa
    $html = file_get_contents('Vista.php');

  9. #9
    Utente di HTML.it
    Registrato dal
    May 2012
    Messaggi
    776
    Il motivo dell'utilizzo del cURL è proprio quello, non potevo utilizzare file_get_contents, e' stato bloccato per ragioni di sicurezza sull'hosting.
    E' possibile fare:
    $html=include'Vista.php';

    ...e trattare la stringa dentro $html a mio piacimento?

  10. #10
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,505
    Si, ma quando poi vai a fare l'echo della variabile aggiunge un 1 alla fine della stringa, non ho fatto prove per capire da cosa dipende, fa qualche prova e vedi come va.

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.