ホームページ バックエンド開発 PHPチュートリアル PHPマルチスレッド実装技術の概要

PHPマルチスレッド実装技術の概要

Jun 20, 2016 pm 01:05 PM
data function nbsp php quot

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 &
ログイン後にコピー

この愚かな方法を使用して、PHP プロセスをバックグラウンドで実行します...PHP は、*uinx での C と同様に、pcntl を使用してプロセスを直接フォークアウトできます。この方法はデータを収集するときに非常に便利で、CURL と fsockopen を組み合わせると速度が非常に速くなります。

 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 />} 
ログイン後にコピー
6. Gearman 分散コンピューティングでは、実行のためにさまざまなマシンへのジョブの分散をサポートするために多くのワーカーを開きます。


このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

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

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

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

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

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

Ubuntu および Debian 用の PHP 8.4 インストールおよびアップグレード ガイド Ubuntu および Debian 用の PHP 8.4 インストールおよびアップグレード ガイド Dec 24, 2024 pm 04:42 PM

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

CakePHP データベースの操作 CakePHP データベースの操作 Sep 10, 2024 pm 05:25 PM

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

CakePHP の日付と時刻 CakePHP の日付と時刻 Sep 10, 2024 pm 05:27 PM

Cakephp4 で日付と時刻を操作するには、利用可能な FrozenTime クラスを利用します。

CakePHP ファイルのアップロード CakePHP ファイルのアップロード Sep 10, 2024 pm 05:27 PM

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

CakePHP について話し合う CakePHP について話し合う Sep 10, 2024 pm 05:28 PM

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

CakePHP バリデータの作成 CakePHP バリデータの作成 Sep 10, 2024 pm 05:26 PM

Validator は、コントローラーに次の 2 行を追加することで作成できます。

CakePHP のロギング CakePHP のロギング Sep 10, 2024 pm 05:26 PM

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

PHP 開発用に Visual Studio Code (VS Code) をセットアップする方法 PHP 開発用に Visual Studio Code (VS Code) をセットアップする方法 Dec 20, 2024 am 11:31 AM

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

See all articles