Repository 32bit  Forum
Repository 64bit  Wiki

[php] Verificare caricamento script esterno [risolto]

Forum dedicato alla programmazione.

Moderatore: Staff

Regole del forum
1) Citare in modo preciso il linguaggio di programmazione usato.
2) Se possibile portare un esempio del risultato atteso.
3) Leggere attentamente le risposte ricevute.
4) Scrivere i messaggi con il colore di default, evitare altri colori.
5) Scrivere in Italiano o in Inglese, se possibile grammaticalmente corretto, evitate stili di scrittura poco chiari, quindi nessuna abbreviazione tipo telegramma o scrittura stile SMS o CHAT.
6) Appena registrati è consigliato presentarsi nel forum dedicato.

La non osservanza delle regole porta a provvedimenti di vari tipo da parte dello staff, in particolare la non osservanza della regola 5 porta alla cancellazione del post e alla segnalazione dell'utente. In caso di recidività l'utente rischia il ban temporaneo.

[php] Verificare caricamento script esterno [risolto]

Messaggioda aschenaz » gio mag 24, 2012 10:51

E' una richiesta un po' strana, ma faccio prima a spiegare il caso concreto... :)
Sto rifacendo il sito alla mia parrocchia; praticamente è finito, ma presenta un inconveniente, che non dipende da me: include un utile widget di un sito esterno, che visualizza un almanacco quotidiano in materia (liturgia, santi etc...); solo che, con una certa frequenza, capita che il widget sia irraggiungibile (probabilmente per limiti di banda), rallentando vistosamente il caricamento dell'intera pagina.
In teoria, sarebbe semplice verificare la disponibilità del file remoto: con allow_url_fopen settato a ON, si dovrebbe poter utilizzare tranquillamente if(fopen("URL...","r")) o if(file_exists("URL...")); in pratica, invece, in entrambi i casi mi dice che è sempre indisponibile (anche quando sono sicuro che è online). Naturalmente, non mi sono limitato alla verifica dell'url dello script, provando diversi percorsi del sito...

Qualche suggerimento?
pensieriemotivi.aschenaz.eu - music-blog
Avatar utente
aschenaz
Staff
Staff
 
Messaggi: 4434
Iscritto il: mar lug 27, 2004 23:00
Località: Reggio Calabria
Nome Cognome: Nino
Slackware: current 64bit
Kernel: 3.14.18
Desktop: KDE 4.10.5

Re: [php] Verificare caricamento script esterno

Messaggioda aschenaz » gio mag 24, 2012 18:00

Ho fatto ricorso a CURL, con una funzioncina che verifica semplicemente lo stato del server remoto.
Funziona. Però, se il server è down, il sito ci mette lo stesso un tantino a caricare...
pensieriemotivi.aschenaz.eu - music-blog
Avatar utente
aschenaz
Staff
Staff
 
Messaggi: 4434
Iscritto il: mar lug 27, 2004 23:00
Località: Reggio Calabria
Nome Cognome: Nino
Slackware: current 64bit
Kernel: 3.14.18
Desktop: KDE 4.10.5

Re: [php] Verificare caricamento script esterno

Messaggioda teox99 » gio mag 24, 2012 18:10

non puoi rifare anche il widget?
Avatar utente
teox99
Linux 2.6
Linux 2.6
 
Messaggi: 734
Iscritto il: ven lug 25, 2008 13:54
Località: Roma[Eur]
Slackware: 13.37
Desktop: KDE - Xfce

Re: [php] Verificare caricamento script esterno

Messaggioda miklos » gio mag 24, 2012 19:43

scusami, ma non ho capito bene.
il tuo sito include tramite html o tramite php il widget??!?!?
in altre parole il php scarica il widget e lo include nel codice... oppure lo fai tramite javascript/Iframe etc etc etc?

ad ogni modo qualunque sia la questione la lentezza del tuo sito puol' dipendere da quanto lo è pure il sito esterno.. sembra paradossale ma se un webserver è carico anche gli errori (404/500 e compagnia bella) vengono mandati 'lentamente'
tieni conto inoltre che se accedi ad una risorsa esterna tramite nome dominio passi attraverso DNS e se il dominio in questione è hostato su un infrastruttura condivisa (hosting nn dedicato insomma) i tempi di latenza anche per le risposte negative possono essere notevoli, soprattutto poi se la non disponibilità dipende da un server web che nn ce la fa piu'(quindi non spento del tutto) e in tal caso devi attendere per forza di cose il timeout stabilito (che tipicamente varia dai 5 secondi al minuto)

EDIT: forse infatti l'unico modo per alleviare il tutto è mettere un timeout sulla richiesta che fai con curl in modo che se nn ottiene risposta nell'arco di un secondo nn include il widget. ho trovato al volo questo link che spiega come fare a mettere un timeout di connessione su curl.
ho visto cose che voi astemi non potete immaginare
miklos
Linux 3.x
Linux 3.x
 
Messaggi: 1267
Iscritto il: lun lug 16, 2007 16:39
Località: Roma
Slackware: 14.1 64bit
Kernel: 3.16.3
Desktop: openbox 3.5.2

Re: [php] Verificare caricamento script esterno

Messaggioda aschenaz » gio mag 24, 2012 20:58

Si tratta un semplice richiamo ad un javascript in iframe. Anche se includessi lo script, lo stesso non potrei riprodurre tutto il widget, almeno in tempi brevi (è abbastanza complesso e va certamente a pescare su di un database di una certa entità).

La lentezza, comunque, la riscontro solo quando la risposta è negativa. Sì avevo pensato ad impostare un timeout. Adesso vado a vedere quel link, grazie. :)

EDIT: c'era già il timeout nella funzione che usavo io. Era impostato a 10: l'ho dimezzato (più che sufficiente)! :thumbright:
pensieriemotivi.aschenaz.eu - music-blog
Avatar utente
aschenaz
Staff
Staff
 
Messaggi: 4434
Iscritto il: mar lug 27, 2004 23:00
Località: Reggio Calabria
Nome Cognome: Nino
Slackware: current 64bit
Kernel: 3.14.18
Desktop: KDE 4.10.5

Re: [php] Verificare caricamento script esterno

Messaggioda ZeroUno » gio mag 24, 2012 22:22

Se è in un iframe usa ajax.
Metti due php. Il primo è la index.php (o chi per lui) e lo dedichi alla costruzione della pagina, e nel posto del widget ci metti un div con scritto "caricamento in corso" (o verifica widget in corso), almeno l'utente ha percezione che il sito non è bloccato, e nel frattempo un javascript asincronamente ti carica widget.php che è uno script che va a fare le verifiche del sito remoto. Se poi il sito è disponibile sostituisce il messaggio di caricamento con un iframe al widget, altrimenti lo sostituisce con un messaggio "spiacenti il widget non è disponibile".
Packages finder: slakfinder.org | Slackpkg+, per aggiungere repository a slackpkg
Codice: Seleziona tutto
1011010 1100101 1110010 1101111 - 0100000 - 1010101 1101110 1101111
Avatar utente
ZeroUno
Staff
Staff
 
Messaggi: 4413
Iscritto il: ven giu 02, 2006 13:52
Località: Roma / Castelli
Nome Cognome: Matteo Rossini
Slackware: current
Kernel: slack-current
Desktop: ktown-latest
Distribuzione: 01000000-current

Re: [php] Verificare caricamento script esterno

Messaggioda aschenaz » gio mag 24, 2012 22:44

Sì, in effetti ho fatto più o meno così. Siccome il widget lo deve caricare in diverse pagine, ma non tutte, ho messo la porzione di script in un modulo, che includo nelle pagine dove serve; lo script a sua volta richiama un metodo della classe principale, che verifica con curl se il sito è online e, se la risposta è false, visualizza "Almanacco attualmente non disponibile".
Adesso ho settato il timeout a 4'': così è ok!
pensieriemotivi.aschenaz.eu - music-blog
Avatar utente
aschenaz
Staff
Staff
 
Messaggi: 4434
Iscritto il: mar lug 27, 2004 23:00
Località: Reggio Calabria
Nome Cognome: Nino
Slackware: current 64bit
Kernel: 3.14.18
Desktop: KDE 4.10.5


Torna a Programmazione

Chi c’è in linea

Visitano il forum: Nessuno e 1 ospite

cron