Sal*_*ali 100 php curl file-get-contents
访问REST API时,这两段代码有何不同?
$result = file_get_contents('http://api.bitly.com/v3/shorten?login=user&apiKey=key&longUrl=url');
Run Code Online (Sandbox Code Playgroud)
和
$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);
Run Code Online (Sandbox Code Playgroud)
从判断起,它们都产生相同的结果
print_r(json_decode($result))
Run Code Online (Sandbox Code Playgroud)
Xeo*_*oss 116
file_get_contents()是一个简单的螺丝刀.非常适合简单的GET请求,其中标头,HTTP请求方法,超时,cookiejar,重定向和其他重要事项无关紧要.
fopen()使用流上下文或带有setopt的 cURL 是powerdrills,您可以想到每个位和选项.
vr_*_*ver 24
除此之外,由于最近的一些网站黑客攻击,我们不得不更多地保护我们的网站.在这样做时,我们发现file_get_contents无法工作,curl仍然可以工作.
不是100%,但我相信这个php.ini设置可能阻止了file_get_contents请求.
; Disable allow_url_fopen for security reasons
allow_url_fopen = 0
Run Code Online (Sandbox Code Playgroud)
无论哪种方式,我们的代码现在都适用于curl.
Ivi*_*pić 16
这是一个古老的话题,但在我对我的API的最后一次测试中,cURL更快更稳定.有时,较大请求的file_get_contents需要超过5秒,而cURL只需要1.4到1.9秒,而且速度要快一倍.
我需要在此添加一条注释,我只是发送GET并重新接收JSON内容.如果你正确设置cURL,你会得到很好的回应.只需"告诉"cURL你需要发送什么以及你需要什么来回复,就是这样.
在你的例子中我想做这个设置:
$ch = curl_init('http://api.bitly.com/v3/shorten?login=user&apiKey=key&longUrl=url');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 5);
curl_setopt($ch, CURLOPT_TIMEOUT, 3);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Accept: application/json'));
$result = curl_exec($ch);
Run Code Online (Sandbox Code Playgroud)
此请求将以0.01秒的最大值返回数据
我知道这是一个老话题,但我相信这非常重要。而现在,与8年前相比,有很多不同。众所周知,Curl是第三部分库。
\n\n\n简单比较:Curl 库的最新版本有超过 170 个不同的函数,能够向 API 发送正确的请求。\n8 年前只有 70 个函数。事实:仍在开发中。
\n
这就是为什么我想对这个问题提出新的评论。
\n文件获取内容()是 PHP 中的一个文件系统函数,您可以从文件中读取内容并使用 GET 和 POST 方法发出请求。您可以在使用 file_get_contents() 函数时向请求添加参数。您可以看到下面的示例。
\n$data = http_build_query(\n array(\n \'user_id\' => \'558673\',\n \'user_name\' => \'John Doe\'\n )\n);\n\n$config = array(\'http\' =>\n array(\n \'method\' => \'POST\',\n \'header\' => \'Content-Type: application/x-www-form-urlencoded\',\n \'content\' => $data\n )\n);\n\n$context = stream_context_create($config);\n\n$result = file_get_contents(\'https://google.com\', false, $context);\nRun Code Online (Sandbox Code Playgroud)\nCurl是开源第三方库。您可以从这里访问 git 存储库。该函数“模拟”HTTP 请求和响应。此模拟允许您处理异步 HTTP 请求和复杂的数据传输。另外,Curl适合执行基于跨域的FTP请求。它可用于各种应用程序,例如从网站爬行数据和代理设置。
\n让我们检查一下 CURL 请求语法。
\n$url = API_ENDPOINT."/get_movies";\n \n $curl = curl_init();\n \n $params = array(\n \'category\' => $category,\n \'limit\' => $limit,\n \'start\' => $start,\n \'order\' => $order,\n \'term\' => $term\n );\n\n $params_string = http_build_query($params);\n\n curl_setopt($curl, CURLOPT_URL, $url);\n curl_setopt($curl, CURLOPT_POST, TRUE);\n curl_setopt($curl, CURLOPT_POSTFIELDS, $params_string);\n curl_setopt($curl, CURLOPT_RETURNTRANSFER, TRUE);\n \n $data = curl_exec($curl); \n curl_close($curl);\n\n echo json_decode($data,TRUE); //service returns json in this sample\nRun Code Online (Sandbox Code Playgroud)\n笔记:这是curl 请求的基本示例。您可以使用 CURLOPT_HTTPHEADER、CURLOPT_SSL_VERIFYPEER 等函数向curl 对象添加更多参数和选项。这些参数完全取决于您和您尝试使用的服务。
\nCURL能够处理复杂的 HTML 通信,但\nfile_get_contents()不能。CURL支持 HTTP PUT、GET、POST,但file_get_contents()支持简单的 HTTP GET 和 HTTP POST 请求。CURL支持缓存和cookie,但\nfile_get_contents()不\xe2\x80\x99t支持缓存、cookie等。CURL能够使用 HTTP、HTTPS、FTP、FTPS 等。 \nfile_get_contents()使用 HTTP 和 HTTPS 协议\n进行通信。CURL可用于从服务器读取、更新和删除文件,但file_get_contents()仅允许您读取文件。CURL比更安全、更快速file_get_contents()CURL比 理解起来要复杂一些file_get_contents()。| 归档时间: |
|
| 查看次数: |
98043 次 |
| 最近记录: |