使用Php实现异步调用

结合用户的请求触发,可以实现计划任务

使用popen/pclose

函数原型

resource popen ( string $command , string $mode )
//打开一个指向进程的管道,该进程由派生给定的 command 命令执行而产生
  • command :命令 mode:模式("r"/"w")

返回一个和 fopen() 所返回的相同的文件指针,只不过它是单向的(只能用于读或写)并且必须用 pclose() 来关闭。此指针可以用于 fgets()fgetss()fwrite()。 当模式为 'r',返回的文件指针等于命令的 STDOUT,当模式为 'w',返回的文件指针等于命令的 STDIN。

需要忽略输出,使新的进程在后台运行

pclose(popen("php test.php &", 'r'));

如果要同步使用的化类似下边这样的

//读取运行输出
$handle = popen('php '.APPPATH.'task/ldap.php '.$stuno.' '. (int)$understu, 'r');
$info = fread($handle,10000);
pclose($handle);

使用curl

设置超时时间就行

CURL常见选项

CURLOPT_TIMEOUT 允许 cURL 函数执行的最长秒数

CURLOPT_TIMEOUT_MS可以设置毫秒级别的超时,但是注意下边

设置cURL允许执行的最长毫秒数。 如果 libcurl 编译时使用系统标准的名称解析器( standard system name resolver),那部分的连接仍旧使用以秒计的超时解决方案,最小超时时间还是一秒钟。

原文地址:https://www.cnblogs.com/jcuan/p/6566321.html