我想编写一个脚本来每隔一小时调用一个Restful API。
我使用Laravel框架。
以下是代码:
include '/var/www/html/dom/vendor/autoload.php';
TestController.php
class TestController extends BaseController
{
public function __construct(ItemCriteria $itemCriteria)
{
parent::__construct($itemCriteria);
}
public function sayHi()
{
echo 'hi';
}
public function getHi()
{
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "http://127.0.0.1:8888/api/v1/sayhi");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$output = curl_exec($ch);
curl_close($ch);
echo $output;
}
}
:
routes.php
我致电Route::group(array('prefix' => 'api/v1'), function () {
Route::get('sayhi', 'Api\TestController@sayHi');
Route::get('gethi', 'Api\TestController@getHi');
}
,但回复永远不会回来。浏览只显示加载。
我尝试过:
在Google上搜索,很多人都说这是因为会话被锁定了。因此,我在api/v1/gethi
之前添加代码以关闭会话:
curl_exec
可悲的是,这不起作用。我检查public function getHi()
{
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "http://127.0.0.1:8888/api/v1/sayhi");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
session_write_close();
$output = curl_exec($ch);
curl_close($ch);
echo $output;
}
,会话不应按照我的设置自动启动:phpinfo()
。
我还做了一个小实验:制作了一个API session.auto_start Off
,它强制线程休眠10秒钟。在此期间,我致电api/vi/sleep
,我发现在第一次通话结束前它不会响应。
api/v1/sayhi
我认为这可能是Apache线程配置问题,但所有配置似乎都很好:
public function sleep()
{
sleep(10);
}
我的环境:
我坚持了几个星期。我不知道我能做的其他事情......