如何使用回调来回复来自php的http请求?

时间:2012-05-17 13:26:21

标签: php curl callback xmlhttprequest phantomjs

我需要编写一个php脚本,它会向我的PhantomJs服务器发出POST请求,并在收到响应后调用一些回调函数。

假设这是我的phantomjs服务器:

var server, service;

server = require('webserver').create();

service = server.listen(8080, function (request, response) {

    //do_something_heavy_with_request_data_here

    response.statusCode = 200;
    response.write("{status: success, data: data}");
    response.close();
});

所以从我的php脚本我需要向http://localhost:8080发出请求,当phantomjs完成计算并发送响应时,触发一个回调函数。 我找到了这个主题:How do I make an asynchronous GET request in PHP?。这里有用吗?我正在考虑这种卷曲方法,但不知道如何让所有这些一起运行,因为我是一个完整的php初学者:How do I make an asynchronous GET request in PHP?

1 个答案:

答案 0 :(得分:1)

您可以使用cURLhttp://www.php.net/manual/en/book.curl.php这是手册。没有什么复杂的。

<?php 

/** 
 * Send a POST requst using cURL 
 * @param string $url to request 
 * @param array $post values to send 
 * @param array $options for cURL 
 * @return string 
 */ 
function curl_post($url, array $post = NULL, array $options = array()) 
{ 
    $defaults = array( 
        CURLOPT_POST => 1, 
        CURLOPT_HEADER => 0, 
        CURLOPT_URL => $url, 
        CURLOPT_FRESH_CONNECT => 1, 
        CURLOPT_RETURNTRANSFER => 1, 
        CURLOPT_FORBID_REUSE => 1, 
        CURLOPT_TIMEOUT => 4, 
        CURLOPT_POSTFIELDS => http_build_query($post) 
    ); 

    $ch = curl_init(); 
    curl_setopt_array($ch, ($options + $defaults)); 
    if( ! $result = curl_exec($ch)) 
    { 
        trigger_error(curl_error($ch)); 
    } 
    curl_close($ch); 
    return $result; 
    } 
?>

这是一个符合您需求的示例代码。