PHP で一般的な非同期呼び出しを実装する方法
ブラウザとサーバー間の通信はコネクションレス型のHTTPプロトコルであり、クライアントがサーバーにリクエストを行い、サーバーはリクエストに応じて対応するプログラムを出力するという特徴があり、永続的な接続を維持することができません。これにより、クライアントの対応するサーバーが 1 秒または 1 分間実行される可能性があるため、プログラムの実行が遅い場合、ブラウザは常に待機状態になる可能性があります。
プログラムの実行結果を気にする必要がない場合もあります。このように時間を無駄にして辛抱強く待つ必要はありません。その場合は、プログラムをバックグラウンドでサイレントに実行する方法を見つける必要があります。待たずに。たとえば、推奨電子メールが 1,000 人のユーザーに送信されるシナリオがあります。ユーザーは電子メール アカウントを入力またはインポートし、送信のためにサーバーに送信します。
<p><?php </p>for($i=0;$i<1000;$i++){ <br /> sendmail(.....);//发送邮件 <br /><p>}</p>
このコードはユーザー エクスペリエンスが非常に悪く、実際には使用できません。まず、大量のメールを送信するとサーバーが動作してしまいます。実際、時間が経つとユーザーはシステム製品に対する疑問を抱き、信頼を失うことになります。
しかし、ユーザーは、正常に送信する前に 1,000 件の電子メールがすべて送信されるまで待つ必要はありません。バックグラウンドに送信した後、ユーザーに送信が成功するよう直接プロンプトを表示し、バックグラウンド プログラムにサイレントに順番に送信させることができます。 。
このとき、コードを実行するには「非同期実行」技術が必要です。非同期実行の特徴は、ユーザーがコードの実行結果を待つ必要がないことです。非同期実行の使用:
1. アプリケーションの単一タスクへの依存を取り除く
2. プログラムの実行効率を向上させる
3.プログラム
4. 特定のシナリオでのユーザー エクスペリエンスの向上
5. PHP はマルチスレッドをサポートしていないため、非同期呼び出しを使用して複数の HTTP をリクエストすると、プログラムの並列実行の効果が得られます。ただし、リクエストされる HTTP リクエストが多すぎると、時間が大幅に増加することに注意してください。PHP 非同期呼び出しを実行する 4 つの一般的な方法
1. クライアント ページは、AJAX テクノロジーを使用してサーバー
最も簡単な方法は、AJAX 呼び出しを埋め込んで HTML コードでクライアントに返すことです。この方法が最も簡単で高速です。サーバーは呼び出しを行う必要はありません。ただし、一般に、Ajax は onLoad の後にトリガーされる必要があるという欠点があります。つまり、ユーザーがページをクリックして閉じた場合、バックグラウンド スクリプトはトリガーされません。
もう 1 つの方法は、img タグを使用し、src 属性を使用して実行するスクリプトを指定することです。この方法は、厳密な意味での非同期実行とは言えません。ユーザーのブラウザは、php スクリプトの実行が完了するまで長時間待機します。つまり、ユーザーのブラウザのステータス バーには常に読み込み状態が表示されます。もちろん、スクリプト タグなど、同様の原理を持つ他のメソッドも使用できます。
2.popen() function
resource Popen (string command, string mode);
//派生コマンドが生成するプロセスを指すパイプをオープンしますコマンドの実行によって。指定されたコマンドを生成したコマンドの実行によって生成されたプロセスへのパイプを開きます。したがって、呼び出して渡すことはできますが、その出力は無視します。 pclose(popen("/home/xinchen/backend.php &", 'r')); このメソッドは最初のメソッドの欠点を回避し、高速です。
しかし、問題は、このメソッドは HTTP プロトコルを通じて別の Web サービスをリクエストできず、ローカル スクリプト ファイルしか実行できないことです。
また、一方向にのみ開くことができ、呼び出されたスクリプトに多数のパラメータを渡すことはできません。また、アクセス数が多ければ、大量のプロセスが生成されます。外部リソースを使用する場合は、競合について自分で考慮する必要があります。
3.CURL 拡張機能
CURL は、POST/GET などの HTTP リクエストをシミュレートし、データを取得および抽出して「標準出力」に表示できる強力な HTTP コマンド ライン ツールです (標準出力)上記。
以下は簡単な使用例です:
<p><?php</p>$ch=curl_init();<br />$curl_opt=array(<br /> CURLOPT_URL,'http://www.scutephp.com/ajax.php',<br /> CURLOPT_RETURNTRANSFER,1,<br /> CURLOPT_TIMEOUT,1<br />);<br />curl_setopt_array($ch,$curl_opt);<br />curl_exec($ch);<br /><p>curl_close($ch);
CURL を使用するには、CUROPT_TIMEOUT を 1 に設定する必要があることに注意してください (最小値は 1、憂鬱です)。つまり、クライアントは少なくとも 1 秒待つ必要があります。
4.fskokopen() 関数
fsockopen は、ソケット プログラミングをサポートする非常に強力な関数です。 fsockopen を使用して、電子メール送信などのソケット プログラムを実装できます。ヘッダー部分を手動で切り離します。
公式手順ドキュメント: http://cn.php.net/fsockopen/
以下は fskokopen 関数の使用方法の例です:
<p><?php</p>$fp=fsockopen('www.scutephp.com',80,$errno,$errstr,30);<br />if(!$fp){<br /> echo "$errstr ($errno)<br />\n";<br />}else{<br /> $out="GET /backend.php / HTTP/1.1\r\n";<br /> $out.="Host: www.scutephp.com\r\n";<br /> $out.="Connection: Close\r\n\r\n";<br /> fwrite($fp,$out);<br /> /*忽略执行结果<br /> while(!feof($fp)){<br /> echo fgets($fp,128);<br /> }*/<br /> fclose($fp);<br />}

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









PHP 8.4 では、いくつかの新機能、セキュリティの改善、パフォーマンスの改善が行われ、かなりの量の機能の非推奨と削除が行われています。 このガイドでは、Ubuntu、Debian、またはその派生版に PHP 8.4 をインストールする方法、または PHP 8.4 にアップグレードする方法について説明します。

CakePHP でデータベースを操作するのは非常に簡単です。この章では、CRUD (作成、読み取り、更新、削除) 操作について理解します。

ファイルのアップロードを行うには、フォーム ヘルパーを使用します。ここではファイルアップロードの例を示します。

CakePHP は、PHP 用のオープンソース フレームワークです。これは、アプリケーションの開発、展開、保守をより簡単にすることを目的としています。 CakePHP は、強力かつ理解しやすい MVC のようなアーキテクチャに基づいています。モデル、ビュー、コントローラー

CakePHP へのログインは非常に簡単な作業です。使用する関数は 1 つだけです。 cronjob などのバックグラウンド プロセスのエラー、例外、ユーザー アクティビティ、ユーザーが実行したアクションをログに記録できます。 CakePHP でのデータのログ記録は簡単です。 log()関数が提供されています

Visual Studio Code (VS Code とも呼ばれる) は、すべての主要なオペレーティング システムで利用できる無料のソース コード エディター (統合開発環境 (IDE)) です。 多くのプログラミング言語の拡張機能の大規模なコレクションを備えた VS Code は、
