2016-06-28 20 views
2

Mein Code ist gehostet auf Amazon Web-Service Server und ich benutze Hathway Internet Service Provider (Indien ISP). Früher funktionierte mein Code perfekt mit Hathway ISP, aber ab einigen Tagen funktioniert mein Code nicht wie erwartet. Ich habe versucht, denselben Code von einem anderen Benutzer von Hathway ISP auszuführen, dort habe ich auch dasselbe Problem gesehen. Ich dachte, dass etwas mit meinem Code nicht stimmt, nach dem Debuggen stellte ich fest, dass alles perfekt war, dies habe ich erfahren, als ich meinen Code mit einem anderen ISP ausgeführt habe. Was passiert mit Hathway ISP ist, es sendet mehrere Anfragen an den Server. Browser sendet nur eine Anfrage an den Server dies habe ich in Browser-Registerkarte Netzwerk überprüft, aber nicht wissen, was passiert in der Mitte, dass Server mehrere Anfragen erhalten. Lassen Sie mich einige Überblick über meinen Code geben,Senden mehrerer Anfrage an den Server

  1. es in PHP geschrieben wird
  2. Excel-Datei heruntergeladen wird
  3. -Code hat riesige Berechnung, so dass es 10 bis 15 Minuten dauert, Excel-Datei
  4. heruntergeladen werden

Dank

+0

I‘ Ich bin nicht sicher, was die Frage ist, aber wenn Ihr ISP Ihre Anfrage manipuliert, sollten Sie sicherstellen, dass Sie ssl verwenden. – jeroen

+0

@jeroen Ich habe perfekten Code mit anderen ISP laufen. Seine einfache HTTP-Anfrage. Werde es mit SSL versuchen. Danke – maheshb

+0

Debug Informationen anfügen? Versuchen Sie Log –

Antwort

1

an Ihrem Blick denke ich, es könnte Probleme mit den übermäßig langen Rechen sein, und die ISP-Anfragen erneut gesendet wird, wenn es zu testen ist am Leben, oder etwas in der Art davon.

Idealer wie dies in einem Prozess würden Sie so etwas tun:

  1. Benutzer klickt Prozess-Taste:
    1.1 Ajax-Anfrage wird an PHP gesendet Excel-Datei zu berechnen.

  2. Ajax-Anforderung erhalten.
    2.1 Abfrage-ID generieren.
    2.2 exec ('PHP berechnenExcel.php $ pollingid'); (Siehe this answer)
    2.3 Polling-ID

  3. erhalten Polling-ID
    3.1 Anfrage Kompilierungsstatus alle 5 Sekunden

  4. erhalten Kompilation Statusabfrage
    4.1 Umfrage Datenbank/file/was auch immer durch die Abfrage idto an Benutzer senden Sehen Sie, wie weit es in kompilieren ist
    4.2.1. falls nicht erfolgt, Rückgabe Prozentsatz abgeschlossen
    4.3.2. falls fertig, zurücksenden download link

  5. empfangsstatus antworten
    5.1. wenn nicht abgeschlossen, Update Statusbar
    5.2. Wenn Sie fertig sind, entfernen Sie die Statusleiste und zeigen Sie den Download-Link an.

So würde ich es machen. Auf diese Weise kann Ihr Server glücklich mit der riesigen Excel-Datei rechnen, der Benutzer muss keine Browser-Timeouts befürchten (einige Browser trennen sich nach 5 Minuten), Windows-Netzwerk-Resets/DNS-Neuverhandlungen, WLAN-Verbindungen usw.

Solange der Benutzer seine Abfrage-ID hat, kann er/sie den Status anfordern und/oder die Datei herunterladen, solange sie verfügbar ist.

+0

In modernen Browsern kann er auch den Web-Socket benutzen. –

+0

true, aber da er eine 5-15 Minuten Seitenlast verwendet, gehe ich mit einem leichteren Vorschlag für ihn zuerst. Das Einrichten von Websockets ist nicht direkt geradlinig und einfach. – Tschallacka

+0

Ja, aber seine Frage war schwieriger als WebSocket einrichten, prost –

0

Ich würde empfehlen, Daten als JSON in einer einzigen Anfrage zu senden. In PHP kannst du es wieder in alle Werte defragmentieren. für z.

xhttp.open("GET", "gotoChatRoomorNot.php?q=[{"+str+"},{"+user1+"},{"+user2"}]", true); 

und in PHP können Sie diese folgen, um Ihre Daten zurückzubekommen: How do I extract data from JSON with PHP?

ich glaube, Sie die gleiche Art von Verhalten mit xml durchführen kann, aber ich bin mir nicht bewusst xml

Verwandte Themen