fsockopen非同期要求を実現する
1804 ワード
fsockopen関数は、ソケットでHTTPプロトコルをシミュレートするもので、一つのsocket接続を開くために使用されてもよく、本物のhttp操作と同様に、一つ以上のユーザに複数のテンプレートメッセージなどのシーンを送信するために使用されてもよい.
一、fsockopen関数を開く
第一歩は、PHPプロファイルphp.iniを開いて、allow_を探してください.クルクルfopenをonに設定します.第二部は、extension=php_を検索します.openssl.dllは前のセミコロンを削除します.第三部は、IISであればIISを再起動し、apacheであればapacheを再起動します.
二、コード実現(TP5.0フレーム下)
まず、複数のマイクロクレジットテンプレートメッセージを送信するコード(概ね論理)である.
一、fsockopen関数を開く
第一歩は、PHPプロファイルphp.iniを開いて、allow_を探してください.クルクルfopenをonに設定します.第二部は、extension=php_を検索します.openssl.dllは前のセミコロンを削除します.第三部は、IISであればIISを再起動し、apacheであればapacheを再起動します.
二、コード実現(TP5.0フレーム下)
まず、複数のマイクロクレジットテンプレートメッセージを送信するコード(概ね論理)である.
public function sendMessage()
{
ignore_user_abort(true);
set_time_limit(0);
// ( )
$msg = $_POST; //POST
$message = getMessage($msg); //
for($a=0;$a
以上のコード循環体は正常にWeChatインターフェースを呼び出すためにsleep関数を使用しています.正常な同期要求は明らかに以下のコードを満たしていません. public 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 = 60;
$fp = fsockopen($host, $port, $errno, $errstr, $timeout);
$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);
}
次にエントランスファイルです.パラメータを設定するためにdorequest()関数を呼び出して非同期要求を実行します.public function message($param) {
$url = 'http://www.xxx.com/yyy/zzz/sendMessage';
$this->doRequest($url, $param);
}