Wie kann ich feststellen, wie viel Speicher / Ressourcen mein PHP-Skript verbraucht?

8

Hallo Leute, ich debugge meine Bewerbung hier und im Grunde in aller Kürze - die Anwendung ist auf meinem Online-Server aussterben oder vielleicht mein Server aussterben. Aber ich habe diese Anwendung drei verschiedene Server überprüft und alle zeigten ähnliche Ergebnisse, die Anwendung würde für eine Weile laufen, aber plötzlich, wenn ich mehr und mehr Anfragen öffne, würde ich einen Netzwerkfehler bekommen oder die Seite würde scheitern laden.

Ich vermute hier seinen Code, also muss ich herausfinden, wie ich es weniger ressourcenintensiv machen kann. Ich weiß nicht, warum es das überhaupt macht. Es läuft aber auf meinem localhost-Rechner ok.

Oder liegt es daran, dass ich es auf einem technisch geteilten Host hosste? Sollte ich nach einem spezialisierten Hosting für das Hosting einer Anwendung suchen? Es gibt eine Menge komplexer Datenbankabfragen und Ajax-Anfragen in meiner Anwendung hier.

    
Ali 25.07.2010, 05:27
quelle

2 Antworten

10

Was die Überprüfung der Speicherkapazität Ihres Skripts betrifft, können Sie regelmäßig % co_de aufrufen % an Punkten in Ihrem Code, um festzustellen, welche Teile Ihres Skripts den Speicher verwenden. memory_get_usage(true) gibt offensichtlich die maximale Speichermenge zurück, die verwendet wurde.

Sie sagen, dass Ihre Anwendung für eine Weile in Ordnung ist. Ist dies ein einzelnes Skript, das die ganze Zeit läuft, oder viele verschiedene Seitenanforderungen / Besucher? Für jedes Skript gibt es normalerweise eine max_execution_time (oft standardmäßig 30 Sekunden). Dies kann im Code per Skript geändert werden, indem memory_get_peak_usage(true) .

Es gibt auch eine inhärente memory_limit wie in php.ini eingestellt. Dies könnte 64 MB oder weniger auf einem freigegebenen Host sein.

"... sobald ich mehr und mehr Anfragen öffne ..." - Es gibt eine Grenze für die Anzahl gleichzeitiger (Ajax) Anfragen, die ein Client mit dem Server machen kann. Browser könnten auf 8 oder sogar weniger eingestellt werden (dies kann in Firefox über set_time_limit() geändert werden). Dies verhindert, dass ein einzelner Client den Server mit Anfragen überschwemmt. Ein Server könnte so konfiguriert werden, dass er Clients, die zu viele Anfragen öffnen, verbietet!

Ein freigegebener Host könnte restriktiv sein. Wenn der Host jedoch nicht zu viele Sites hostet, können sie ziemlich leistungsstarke Server sein, die Ihnen für eine kurze Zeit sehr viel Power zur Verfügung stellen. Der Schwerpunkt liegt auf kurzer Zeit - es liegt im Interesse des Hosts, Skripts zu steuern, die auf einem gemeinsam genutzten Server zu viele Ressourcen verbrauchen, da andere Kunden betroffen wären.

  

Soll ich nach einem spezialisierten Hosting für das Hosting einer Anwendung suchen?

Sie müssen genauer sein. Die meisten Websites sind heutzutage "Anwendungen". Wenn Sie mehr als nur Webseiten bereitstellen und ständig intensive Skripts ausführen, die für eine gewisse Zeit ausgeführt werden, müssen Sie möglicherweise dediziertes Hosting verwenden. Nicht nur zu Ihrem Vorteil, sondern auch für andere auf dem gemeinsam genutzten Server!

    
MrWhite 25.07.2010, 10:51
quelle
0

Die Antwort ist wahrscheinlich die Tatsache, dass Ihr Hosting-Unternehmen eine ziemlich restriktive php.ini-Konfiguration hat. Sie können beispielsweise die Zeit, für die ein Skript ausgeführt werden kann, begrenzen oder die Speichermenge begrenzen, die ein Skript verwenden kann.

Was versucht Ihr Code zu tun?

Sie könnten in Erwägung ziehen, memory_get_usage und / oder memory_get_peak_usage .

    
Finbarr 25.07.2010 10:46
quelle