2010-02-06 15 views
10

Gli ultimi due giorni abbiamo esaminato questo problema per diverse ore per capire cosa sta succedendo e non siamo in grado di trovare alcun indizio. Ecco cosa sta succedendo; Abbiamo un'applicazione Flash che consente alle persone di effettuare ordini. Gli utenti configurano un prodotto e un'immagine di quel prodotto è generata da Flash al volo e presentata all'utente. Quando sono soddisfatti, possono inviare un ordine al server. Una matrice di byte dell'immagine e alcune altre variabili vengono inviate al server che elabora l'ordine e genera un PDF con un riepilogo dell'ordine e dell'immagine del prodotto. Lo script dell'ordine quindi rimanda tutto al browser.Richiesta di file php da Flash si blocca in Safari

Tutto sta andando molto bene, tranne Safari su OSX 10.4. Occasionalmente l'ordine arriva ma la maggior parte delle volte Safari si blocca. Quando si guarda la finestra Attività in Safari, afferma che è in attesa dello script dell'ordine e che è "0 byte di?". Abbiamo pensato che ci fosse qualcosa di sbagliato nel server, quindi abbiamo provato diversi altri server ma il problema persiste. Inizialmente abbiamo usato un semplice post per elaborare l'ordine ma, nel tentativo di risolvere questo problema, abbiamo fatto ricorso a metodi più sofisticati come il remoting via Flash tramite AMFPHP. Anche questo non ha risolto il problema.

Utilizziamo Charles per monitorare il traffico http per capire se le richieste stanno abbandonando il browser, ma la cosa strana è che quando Charles è in esecuzione, non possiamo riprodurre il problema.

Spero che qualcuno abbia la minima idea di cosa sta succedendo perché non riusciamo a capirlo.

+0

Dubito che questo sia un problema con il tuo codice o server o qualcosa del genere. Considerando che funziona ovunque, lo metterei come un bug Flash o Safari/Mac. - Consentitemi di metterlo in questo modo: il 99% dei crash relativi al browser su Mac sono dovuti a Flash; il flash player * è * una delle app più utilizzate dai bug, utilizzate per il consumo delle risorse; Apple ha pubblicamente evitato Flash, ove possibile. - Personalmente, sono molto d'accordo con Apple in questo, ma sono solo io. - Scusa, non posso essere di alcun aiuto:/ – Atli

+0

Solo guardando il tuo titolo stavo per suggerire AMFPHP o ZendAMF, e Charles - ma sembra che tu sappia esattamente cosa stai facendo. È davvero bizzarro che funzioni ovunque, ma Safari, dal momento che apparentemente il browser non è nemmeno realmente coinvolto: stai facendo la connessione AMF direttamente dal lettore al server. Per favore fateci sapere se capite questo! – Myk

+0

Due cose da risolvere: 1) Qualche differenza con Safari su altre (più recenti) versioni di OSX? 2) Safari (stessa versione) per Windows replica l'errore? – artlung

risposta

1

solo un ipotesi:

sta ottenendo il PDF indietro il risultato di 1 richiesta HTTP che sia invia tutti i dati necessari per il server e ottiene il pdf di conseguenza? Altrimenti questo potrebbe essere un problema di temporizzazione - sei sicuro che tutti i dati siano disponibili sul server nel momento in cui viene richiesto il pdf? Il numero di connessioni parallele allowd a un sito Web non è lo stesso per tutte le marche/versioni di browser e forse ciò potrebbe influenzare la probabilità di un "conflitto" che si verifica.

Test facile: introdurre un ritardo tra l'invio dei dati al server e il recupero del pdf e vedere se ciò ha alcun effetto.

+0

Grazie Simon, penso valga la pena provarlo. Non è davvero una richiesta, ma due. Il primo invia tutti i dati dell'immagine e ottiene una risposta con un token per effettuare la seconda richiesta. La seconda richiesta contiene altre variabili di ordine. Il PDF è la risposta alla seconda richiesta. Finora, è sempre stato che se la prima richiesta arriva, anche il secondo lo fa e anche il PDF viene generato, inviato e ricevuto. – Abel

+0

Ho alcuni aggiornamenti su questo problema. Abbiamo giocato un po 'con i tempi. Sembra essere un grande passo verso la soluzione. Attualmente stiamo ricevendo errori in Acrobat che dice "Dati insufficienti per un'immagine", ma non siamo più stati in grado di riprodurre il bug su nessuna macchina. – Abel

Problemi correlati