php 异步处理的实现

百度出来的,感觉使用fsockopen来实现异步还不错,没有实际运用于生成环境,不知道有没有坑?
另外还有什么其他好的解决方案呢?

<?php
 
$url = 'http://www.example.com/doRequest.php';
$param = array(
    'name'=>'fdipzone',
    'gender'=>'male',
    'age'=>30
);
 
doRequest($url, $param);
 
function doRequest($url, $param=array()){
 
    $urlinfo = parse_url($url);
 
    $host = $urlinfo['host'];
    $path = $urlinfo['path'];
    $query = isset($param)? http_build_query($param) : '';
 
    $port = 80;
    $errno = 0;
    $errstr = '';
    $timeout = 10;
 
    $fp = fsockopen($host, $port, $errno, $errstr, $timeout);
 
    $out = "POST ".$path." HTTP/1.1\r\n";
    $out .= "host:".$host."\r\n";
    $out .= "content-length:".strlen($query)."\r\n";
    $out .= "content-type:application/x-www-form-urlencoded\r\n";
    $out .= "connection:close\r\n\r\n";
    $out .= $query;
 
    fputs($fp, $out);
    fclose($fp);
}
 
?>
阅读 3.8k
4 个回答

fsockopensocket连接吧?和异步有关系吗?你的需求是啥

异步处理多半会用到消息队列,你这种就是一个socket连接,跟异步没多大关系

可以算是异步吧,和curl请求都是属于这种类型,异步非阻塞。

如果是消息队列 ,轻量级 推荐redis,读写速度都是非常快的, 如果数据量比较大,例如超过10k,redis入队列的速度就非常慢了。

新手上路,请多包涵

PHP 有想要学习交流的朋友可以加群 646724664

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题