我正在尝试在我的服务器上对后台脚本进行curl异步POST
由于在我的服务器端运行的脚本总是执行许多耗时的任务,因此我希望我的服务器端脚本异步运行并将浏览器控制权交给用户。
我的问题是,即使下面的代码被修改,这些脚本对我来说也不起作用。有什么建议吗?
编辑:在我尝试这样做之前,我的curl和shell_exec部分运行良好。
以下是用户端的代码。
<?php
//...
$xml = ""; //my xml
$url = ""; //my url
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,$url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_FRESH_CONNECT, true); //just add
curl_setopt($ch, CURLOPT_TIMEOUT, 1);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $xml);
curl_setopt($ch, CURLOPT_HEADER, false);
curl_setopt($ch, CURLOPT_NOBODY, true); //just added
$data=curl_exec($ch);
echo $data;
if(curl_errno($ch)) {
print curl_error($ch);
}
else
curl_close($ch);
?>
我的服务器端脚本就在这里。
<?php
$data = trim(file_get_contents('php://input'));
$xml = simplexml_load_string($data);
//...
echo "gonna import data to database";
ignore_user_abort(true);
set_time_limit(0);
shell_exec("mysql test < test.sql"); // assume that is line takes 1 minute
?>