
PHP异步执行任务fsockopen的实用方法
我们创建了一个基于fsockopen的函数,这个函数中利用fsockopen去访问url,但是在访问时,并不要求获取url显示的内容,而是仅仅发出访问请求,请求到达后马上关闭这个访问。
这样做的好处就是无需再等待被访问的url是否返回了可靠的信息,节约了时间,这段代码的执行时间在0.1-0.2秒之间,对于普通访客而言,几乎察觉不到。因此,在使用时,仅需要调用这个函数和对应的url即可。不过,这里并没有提供数据传输的部分,如何传输数据,其实只需要在$header中增加post的内容即可。
/**
* @生生 2018/12/24 19:25:06
* [asynchronous PHP异步执行任务]
* @param string $url 执行任务的url地址
* @param array $post_data 需要post提交的数据POST
* @param array $cookie cookie数据用于登录等的设置(此处内部调用,无需鉴权)
* @return boole
*/
public function asynchronous($url,$post_data = array())
{
$url_array = parse_url($url);
dump($url_array);
//用fsockopen()尝试连接
$fp = fsockopen($url_array['host'], 80, $errno, $errstr, 30);
if (!$fp) {
echo "$errstr ($errno)<br />\n";
} else {
//建立成功后,向服务器写入数据
$getPath = isset($url_array['path']) ? $url_array['path'] : '/';
$out = "GET /".$getPath."/ HTTP/1.1\r\n";
$out .= "Host:".$url_array['host']."\r\n";
$out .= "Connection: Close\r\n\r\n";
fwrite($fp, $out);
/*忽略执行结果
while (!feof($fp)) {
echo fgets($fp, 128);
}*/
//关闭链接
fclose($fp);
}
}调用方法
/**
* 异步方法
* 参数:(string)要执行的方法url,(array)传入参数
*/
function yibu(){
$this->asynchronous('https://www.liqingbo.cn/index.php/admin/index/test',['1'=>'haha']);
//直接返回结果
echo '操作成功';
}推荐教程:《PHP视频教程》
Atas ialah kandungan terperinci 异步执行PHP任务fsockopen的干货. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!
Apakah perbezaan antara penghala dan kucing?
Bagaimana untuk mengambil tangkapan skrin pada telefon mudah alih Huawei
Akhiran nama fail pengubahsuaian kelompok Linux
Platform dagangan mata wang digital rasmi
Tutorial C#
Perbezaan antara unix dan linux
Bagaimana untuk mengekstrak audio daripada video dalam java
Apakah hos maya php percuma di luar negara?