PHPマルチスレッド実装技術の概要
PHP マルチスレッド実装テクノロジの概要
ご存知のとおり、PHP にはマルチスレッドがありませんが、AJAX 非同期アクセスなどのいくつかのテクニックを使用してマルチスレッド効果を実現できます。の上。ここ数日間で私が遭遇した PHP 非同期呼び出しの要件とソリューションを要約します。
1. AJAX 非同期アクセス処理を実装するには、完全な操作インターフェイスと、進行状況を収集するための動的なプログレス バーが必要です。 (AJAX) AJAX を使用して実装し、ajax を通じてサーバーに継続的にアクセスし、setInterval を通じて間隔を設定し、data.php ファイルにアクセスしてデータを処理し、ページの対応する DOM コンテンツを更新します。
例:
<p> jQuery(document).ready(function($) { <br /> $('#submit').click(function(){ <br /> setInterval("updateMsg()", 1000); <br /> $.post('data.php', $('#form1').serialize(), function(data, textStatus){ <br /> var new_data = "<p>本次处理的数据总数为:" + data + "</p>"; <br /> $('#total_area').html(new_data); <br /> $('#monitor_area').html('<p>正在初始化信息监控.....</p>'); <br />}); <br /> $.post('test.php',$('#form1').serialize()); <br /> return false; <br /> });<br /> <br /> function updateMsg(){ <br /> $.get("backend.php",{},function(data, textStatus){ <br /> var now_total = "<p>目前已采集数量:" + data + "</p>"; <br /> $("#monitor_area").html(now_total); <br /> }); </p><p> } </p>
2. PHP メール送信リマインダー機能の実装。 (メッセージキュー) 申請者の情報を知り、できるだけ早く連絡したい登録システム。登録情報は 10 日以上に 1 件しか存在しない可能性があります。携帯電話のリマインダーは139にメールを送る方法を採用しています。しかし、問題があります。ユーザーが個人情報を送信するプログラム部分に電子メールを送信するためのコードを記述すると、送信プロセスが非常に遅くなり、場合によっては 3 秒以上かかるため、耐えられません。メールの送信などに時間がかかる場合には「キュー」という方式が使われます。もちろん、このキューは RabbitMQ や ZeroMQ ほど高度ではありません。実際には情報がデータベースに保存され、キューに入れられたものとしてカウントされ、データベース内の情報を処理するために cron が設定されます。 、これも愚かな方法です。
3. もちろん、どこにでもメッセージ キューが存在しますが、これは単なる最低の方法であり、同時実行性が高くなると必然的に失敗します。この時点で、伝説的な RabbitMQ を使用すると、パフォーマンスが大幅に向上するはずです。 Redis データベースもあります。私はこれを使用しましたが、そのリストをメッセージキューとして使用するのは非常に良いと思います
4. CURL メソッド、curl_multi も良いことだと言われています。ただし、CUROPT_TIMEOUT の最小値は 1 であるため、クライアントは少なくとも 1 秒待つ必要があり、これも欠陥です。
5. Popen() 関数は、指定されたコマンド command の実行によって生成されるプロセスを指すパイプを開きます。
<p>pclose(popen("/home/xinchen/backend.php &", 'r')); </p><p>fsockopen()</p>
この方法では、http ヘッダーを自分で結合する必要があります。 5. PHP のマルチプロセス。実際、この方法は、処理する大きなデータを for ループに従って小さなセグメントに分割し、vim を使用して処理してから
< を実行する方法です。 CLI モードで 🎜>php –f example1.php &<br />php –f example2.php &
for($i = 0; $i <$intNum; $i++) {<br />$pids[$i] = pcntl_fork();// 产生子进程,而且从当前行之下开试运行代码,而且不继承父进程的数据信息<br />if($pids[$i] == -1) {<br />echo "couldn't fork". "n";<br />} elseif(!$pids[$i]) {<br />sleep(1);<br />echo "n"."第".$i."个进程 -> " . time(). "n";<br />//这里就可以放信息采集抓取等东西的代码了。<br />exit(0);//子进程要exit否则会进行递归多进程,父进程不要exit否则终止多进程<br />}<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 は、
