PHP非同期要求

4393 ワード

通常、PHPは同期要求であり、スクリプトは右上から順に実行され、次の操作を行うには、前の要求が完了するまで待たなければならない.この効率は、メールの送信などの操作は、非同期で処理できる場合がある.
PHP非同期も多くのプラグインがありますが、オリジナルのPHP関数、fsockopen()、関数httpリクエスト、socketを変更することができます.
この関数の公式サイトのマニュアルはすでに例を提供して、私は私の最適化したコードを貼って、httpを使っています.
  
public function dealdata(Request $request)
    {
        $url = 'http://test.com/demo/index/temp';
        $param = [
            'param1'=>'name',
            'param2'=>'value'
        ];
        $this->syncRequest($url, $param);
    }

    public function syncRequest($url, $param=array(),$timeout =10)
    {
        $urlParmas = parse_url($url);
        $host = $urlParmas['host'];
        $path = $urlParmas['path'];
        $port = isset($urlParmas['port'])? $urlParmas['port'] :80;
        $errno = 0;
        $errstr = '';

        $fp = fsockopen($host, $port, $errno, $errstr, $timeout);
//        stream_set_blocking($fp,0);
        $query = isset($param)? http_build_query($param) : '';
        $out = "POST ".$path." HTTP/1.1\r
"; $out .= "host:".$host."\r
"; $out .= "content-length:".strlen($query)."\r
"; $out .= "content-type:application/x-www-form-urlencoded\r
"; $out .= "connection:close\r
\r
"; $out .= $query; fputs($fp, $out); fclose($fp); }

 
転載先:https://www.cnblogs.com/IT--Loding/p/9063568.html