PHP CURL后台进程-RESTAPI URL

PHP CURL后台进程-RESTAPI URL,php,rest,curl,Php,Rest,Curl,我正在尝试使用Curl执行后台RESTAPI调用 php中的库。我想它不起作用了 你能推荐我吗 $cum_url = http://localhost/test/list; $post = [ 'id' => $object->id ]; $ch = curl_init($cum_url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_HEADER, false);

我正在尝试使用Curl执行后台RESTAPI调用 php中的库。我想它不起作用了

你能推荐我吗

$cum_url       = http://localhost/test/list;
$post = [ 'id' => $object->id ];
$ch = curl_init($cum_url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HEADER, false);         
curl_setopt($ch, CURLOPT_NOBODY, true);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $post);
curl_setopt($ch, CURLOPT_FRESH_CONNECT, true);
curl_setopt($ch, CURLOPT_TIMEOUT_MS, 1);
curl_exec($ch);
curl_close($ch);
更新:剔除错误显示“已达到超时”

谢谢,
Raja K

您需要将post数据从数组传输到http参数字符串,例如:

$cum_url = "http://localhost/test/list";
$post = [ 'id' => $object->id ];
$postdata = http_build_query($post);

$options = array (CURLOPT_RETURNTRANSFER => true, // return web page
    CURLOPT_HEADER => false, // don't return headers
    CURLOPT_FOLLOWLOCATION => true, // follow redirects
    CURLOPT_AUTOREFERER => true,
    CURLOPT_USERAGENT => "Mozilla/5.0 (Windows; U; Windows NT 5.1; rv:1.7.3) Gecko/20041001 Firefox/0.10.1",
    CURLOPT_SSL_VERIFYHOST => false,
    CURLOPT_SSL_VERIFYPEER => false);
$ch = curl_init($cum_url);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $postData);
curl_setopt_array ( $ch, $options );
$res = null;
if(!curl_errno($ch)) {
    $res = curl_exec($ch);
}
curl_close($ch);

当然,某些选项是可选的,具体取决于您,例如CURLOPT_USERAGENT。只显示一个示例。

您需要将post数据从数组传输到http参数字符串,例如:

$cum_url = "http://localhost/test/list";
$post = [ 'id' => $object->id ];
$postdata = http_build_query($post);

$options = array (CURLOPT_RETURNTRANSFER => true, // return web page
    CURLOPT_HEADER => false, // don't return headers
    CURLOPT_FOLLOWLOCATION => true, // follow redirects
    CURLOPT_AUTOREFERER => true,
    CURLOPT_USERAGENT => "Mozilla/5.0 (Windows; U; Windows NT 5.1; rv:1.7.3) Gecko/20041001 Firefox/0.10.1",
    CURLOPT_SSL_VERIFYHOST => false,
    CURLOPT_SSL_VERIFYPEER => false);
$ch = curl_init($cum_url);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $postData);
curl_setopt_array ( $ch, $options );
$res = null;
if(!curl_errno($ch)) {
    $res = curl_exec($ch);
}
curl_close($ch);

当然,某些选项是可选的,具体取决于您,例如CURLOPT_USERAGENT。举个例子。

参考:请在问题中包含您的错误或其他发现。你怎么知道它不起作用了?我希望你不是真的猜到了,但先测试一下;)嗨,谢谢。我在RESTURL中添加了一个db插入行。不是砰砰的一声。在我添加了curl\u setopt($ch,CURLOPT\u FRESH\u CONNECT,true)之后,它就不起作用了;curl_setopt($ch,CURLOPT_TIMEOUT_MS,1);背景流程参考:请在问题中包含您的错误或其他发现。你怎么知道它不起作用了?我希望你不是真的猜到了,但先测试一下;)嗨,谢谢。我在RESTURL中添加了一个db插入行。不是砰砰的一声。在我添加了curl\u setopt($ch,CURLOPT\u FRESH\u CONNECT,true)之后,它就不起作用了;curl_setopt($ch,CURLOPT_TIMEOUT_MS,1);谢谢你的背景资料。正常的卷曲在起作用。我说的是背景过程。您是说您正在使用snippet支持后台进程吗?请参阅以确保您了解curl选项,并且只使用必要的选项,而不只是复制其他示例中的选项。。。另外,CURLOPT_RETURNTRANSFER设置为true时不会返回网页,而是以字符串形式返回响应,而不是直接输出。对不起,我误解了您的问题。如果您正在寻找使用curl发送异步调用,也许您可以试试这个。DTH,谢谢你的提醒。是的,您是对的,在使用文档之前最好先检查文档中的使用选项。谢谢。正常的卷曲在起作用。我说的是背景过程。您是说您正在使用snippet支持后台进程吗?请参阅以确保您了解curl选项,并且只使用必要的选项,而不只是复制其他示例中的选项。。。另外,CURLOPT_RETURNTRANSFER设置为true时不会返回网页,而是以字符串形式返回响应,而不是直接输出。对不起,我误解了您的问题。如果您正在寻找使用curl发送异步调用,也许您可以试试这个。DTH,谢谢你的提醒。是的,您是对的,在使用文档之前最好检查文档中的使用选项。