PHP 命令运行正常时卷曲超时
PHP Curl times out when command works fine
我希望将以下 cURL 命令转换为 PHP
curl -X PUT -H 'Content-Type: application/json' -d '{"on":true,"bri":255,"sat":255,"hue":20000}' http://MYSITE:PORT/api/HASH/lights/1/state
我做了以下操作,但它只是超时。
$data_json = '{"on":true,"bri":255,"sat":255,"hue":20000}';
$url = "http://MYSITE:PORT/api/HASH/lights/1/state";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json'));
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'PUT');
curl_setopt($ch, CURLOPT_POSTFIELDS,$data_json);
$response = curl_exec($ch);
echo $response;
curl_close($ch);
我会尝试使用提到的技术 here 调试 Curl 请求,这应该会为您提供有关 Curl 正在做什么的更多信息。
此外,如果您愿意使用库,我建议您使用 Guzzle,它有很好的文档记录,根据我的经验,这些类型的操作不那么痛苦。
<?php
use GuzzleHttp\Client;
require 'vendor/autoload.php';
$url = "http://jsonplaceholder.typicode.com/posts";
$client = new Client();
$body['title'] = "json guzzle post";
$body['body'] = "carlton";
$body['userId'] = "109109101";
$res = $client->post($url, [ 'body' => json_encode($body) ]);
$code = $res->getStatusCode();
$result = $res->json();
var_dump($code);
var_dump($result);
你可以像这样设置卷曲超时
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT ,0);
curl_setopt($ch, CURLOPT_TIMEOUT, 400); //超时秒数
您可能还想增加 php.ini 中的 php 超时时间
我希望将以下 cURL 命令转换为 PHP
curl -X PUT -H 'Content-Type: application/json' -d '{"on":true,"bri":255,"sat":255,"hue":20000}' http://MYSITE:PORT/api/HASH/lights/1/state
我做了以下操作,但它只是超时。
$data_json = '{"on":true,"bri":255,"sat":255,"hue":20000}';
$url = "http://MYSITE:PORT/api/HASH/lights/1/state";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json'));
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'PUT');
curl_setopt($ch, CURLOPT_POSTFIELDS,$data_json);
$response = curl_exec($ch);
echo $response;
curl_close($ch);
我会尝试使用提到的技术 here 调试 Curl 请求,这应该会为您提供有关 Curl 正在做什么的更多信息。
此外,如果您愿意使用库,我建议您使用 Guzzle,它有很好的文档记录,根据我的经验,这些类型的操作不那么痛苦。
<?php
use GuzzleHttp\Client;
require 'vendor/autoload.php';
$url = "http://jsonplaceholder.typicode.com/posts";
$client = new Client();
$body['title'] = "json guzzle post";
$body['body'] = "carlton";
$body['userId'] = "109109101";
$res = $client->post($url, [ 'body' => json_encode($body) ]);
$code = $res->getStatusCode();
$result = $res->json();
var_dump($code);
var_dump($result);
你可以像这样设置卷曲超时
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT ,0); curl_setopt($ch, CURLOPT_TIMEOUT, 400); //超时秒数
您可能还想增加 php.ini 中的 php 超时时间