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

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

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

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

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

CakePHP はオープンソースの MVC フレームワークです。これにより、アプリケーションの開発、展開、保守がはるかに簡単になります。 CakePHP には、最も一般的なタスクの過負荷を軽減するためのライブラリが多数あります。
