Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

[PHP] Probleme mit file_get_contents($url)

Empfohlene Antworten

Veröffentlicht

Momentan verwende ich in einem Script die Funktion file_get_contents($url), welche jedoch ab einer gewissen Menge an Aufrufen Probleme macht. Um mal genaue Dimensionen zu liefern: ~200.000 Aufrufe sind gepant, jedoch dauert es schon bei 10 Aufrufen sehr lange.

Leider bin ich total überfragt, was die massive Verzögerung der Ausgabe angeht, denn der Server von dem ich etwas auslesen möchte hat eine Antwortzeit von konstanten 8ms.

Weiß jemand woran es liegt, dass die Funktion selbst bei kleinen Strings und wenigen Aufrufen so lange braucht, um eine Antwort zu liefern?

Als nächstes wäre die überlegung, wie ich den Prozess der Datengewinnung beschleunigen kann. Kennt jemand spontan performantere Methoden um die Seiten auszulesen?

Mfg Shadowman

Hi,

zuerst: Ich bin kein Programmierer und kann dir nicht sagen ob jetzt z.B. fopen o.A. performancetechnisch besser geeignet wären.

Aber:

Was genau möchtest du mit deinem Skript realisieren?

Was genau ist bei dir "lange" (bezogen auf die 10 Aufrufe?

An welchen Server stellst du die Anfragen? Möglicherweise ist die Kiste einfach unterdimensioniert oder gut konfiguriert (ich denke an z.B. an das Apache Modul mod_qos, welches dir bei einer bestimmten Anzahl an gleichzeitigen Anfragen einfach die Verbindung dicht macht bzw. drosselt).

Gruß

axxis

  • Autor

An fopen habe ich garnicht gedacht, wobei ich dann nicht sicher bin, ob ich bei fopen das selbe Ergebnis erhalte. Das werde ich aber nachprüfen. Danke dafür schonmal ;)

Das Script ist dafür gedacht zu unbestimmten Zeiten mehrere externe Seiten zu analysieren und mich zu informieren, wo unstimmigkeiten sind.

Lange lässt sich gerade schwer definieren, aber ich glaube, dass ess pro anfrage ~1,25 sec waren. Somit wären es bei 10 aufrufen schon 12,5 sec.

Zu den Infos des Servers kann ich leider nichts sagen, da es nicht mein Server ist und diese Informationen nicht öffentlich gemacht wurden

  • Autor

Ich habe gerade ein kleines Messungsscript geschrieben, welcher jedoch ganz andere Zahlen liefert als erwartet.

kleinstes Ergebnis:

file_get_contents: 1.27939319611 Sekunden

fopen: 1.05678582191 Sekunden

größtes Ergebnis:

file_get_contents: 10.7561900616 Sekunden

fopen: 9.56712818146 Sekunden

Das sind die Zeiten von 1 Anfrage an die selbe Seite mit beiden Methoden

Bearbeitet von Shadowman

Ich nehme an, du hast keinen Zugriff auf die Server, welche du abfragst?

Hast du dir mal angeschaut, ob die Seite an sich lahmt? (z.B. mit der Netzwerkanalyse von Firebug o.Ä.)?

Wenn du uns die Links zur Verfügung stellst, könnte man ausschließen, dass der Bottleneck auf deiner Seite besteht.

  • Autor

Nein, leider habe ich keinen Zugriff auf die Seite.

Wie geht das denn mit der Netzanalyse von Firebug? Bin kein begeisterter FF nutzer ;)

EDIT:

User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; de; rv:1.9.2.18) Gecko/20110614 Firefox/3.6.18

Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8

Accept-Language: de-de,de;q=0.8,en-us;q=0.5,en;q=0.3

Accept-Encoding: gzip,deflate

Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7

Keep-Alive: 115

Connection: keep-alive

Cookie: PHPSESSID=d6f99022aedc7acecc8df1b17677ffd6

Date: Fri, 05 Aug 2011 16:01:34 GMT

Server: Microsoft-IIS/6.0

X-Powered-By: PleskWin, ASP.NET, PHP/5.2.6

Expires: Thu, 19 Nov 1981 08:52:00 GMT

Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0

Pragma: no-cache

Content-Type: text/html

Content-Length: 11769

GET URL

Status: 200 OK

Größe: 11,5 KB

Zeitlinie: 3,34s

Bearbeitet von Shadowman

11,5KB in 3 Sekunden. Schon ganz schön happig.

Eigentlich kanns nur daran liegen:

Server: Microsoft-IIS/6.0

*scnr* :P

Aber im Ernst:

Bei der Netzwerkanalyse vom Firebug siehst du ja, welcher Request am längsten dauert.

Grund dafür kann vieles sein: schlechter Code, schlechte Konfig, externe Aufrufe an z.B. Tracking-Systeme oder wahlose fopen's zu anderen Seiten ;)

Wie gesagt, um dich wirklich auszuschließen, könnte ich die Verbindung auch mal überprüfen. Sollte das nicht so sein, hast du eben die Karte gezogen.

Archiv

Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.