Wie unterscheiden sich diese beiden Codeteile beim Zugriff auf eine REST-API?
$result = file_get_contents('http://api.bitly.com/v3/shorten?login=user&apiKey=key&longUrl=url');
und
$ch = curl_init('http://api.bitly.com/v3/shorten?login=user&apiKey=key&longUrl=url');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$result = curl_exec($ch);
Beide führen nach dem gleichen Ergebnis
print_r(json_decode($result))
php
curl
file-get-contents
Salvador Dali
quelle
quelle
cURL
ist zu viel mehr fähig alsfile_get_contents
. Das sollte genug sein.Antworten:
file_get_contents()
ist ein einfacher Schraubendreher. Hervorragend geeignet für einfache GET-Anforderungen, bei denen der Header, die HTTP-Anforderungsmethode, das Timeout, das Cookiejar, Weiterleitungen und andere wichtige Dinge keine Rolle spielen.fopen()
mit einem Stream-Kontext oder cURL mit setopt sind Powerdrills mit jedem Bit und jeder Option, die Sie sich vorstellen können.quelle
file_get_contents
Ermöglicht auch das Festlegen des Kontexts, dh Sie können die Kopfzeilenfelder nach Ihren Wünschen festlegen.Darüber hinaus mussten wir aufgrund einiger kürzlich durchgeführter Website-Hacks unsere Websites mehr sichern. Dabei stellten wir fest, dass file_get_contents nicht funktionierte, wo Curl noch funktionieren würde.
Nicht 100%, aber ich glaube, dass diese php.ini-Einstellung die Anfrage file_get_contents blockiert hat .
In jedem Fall funktioniert unser Code jetzt mit Curl .
quelle
file_get_contents
mussallow_url_fopen
ehrlich sein.file_get_contents()
aufgrund vieler Exploits, von denen bekannt ist, dass sie die Funktion verwenden. cURL ist die Funktion, die Benutzer jetzt im Code verwenden sollten.allow_url_fopen
weil sie es irgendwie verwechselnallow_url_include
.allow_url_fopen
undfile_get_contents
sind gut zu bedienen.file_get_contents()
Dies ist ein altes Thema, aber bei meinem letzten Test auf einer meiner APIs ist cURL schneller und stabiler. Manchmal benötigen file_get_contents bei größeren Anforderungen mehr als 5 Sekunden, wenn cURL nur 1,4 bis 1,9 Sekunden benötigt, was doppelt so schnell ist.
Ich muss einen Hinweis hinzufügen, dass ich nur GET sende und JSON-Inhalte empfange. Wenn Sie cURL richtig einrichten, erhalten Sie eine gute Antwort. Sagen Sie einfach, was Sie senden müssen und was Sie empfangen müssen, und das war's.
Auf Ihrer Exampe möchte ich dieses Setup machen:
Diese Anfrage gibt Daten in max. 0,01 Sekunden zurück
quelle
file_get_contents
wie bei einigen API-Aufrufen zur Bestätigung. 0,8 Sekunden fürfile_get_contents
& 0,49 Sekunden fürcurl
(3 API-Aufrufe)