PHP 非同期: fsockopencurl を使用して、PHP の非同期処理と同様の関数メソッドを実装します。
PHP は、主流の観点からはプロセス指向の言語です。その最大の欠点は、プログラムの実行が最初から最後までロジックに従って実行されることです。これが、主流のプログラミング言語の中で PHP が高水準言語として開発されることを制限する理由の 1 つです。
PHP では、特定の操作を実行するときに、実際に別の操作を実行したい場合があります。ユーザーがチケットを取得しているときに、クエリのためにデータベースに接続するためにユーザーがキューに並ぶことを望まない場合があります。を挿入し、完了後にユーザー結果を返します。実際、ユーザーが送信した後は、チケットを正常に取得したことをユーザーに直接伝えることができ、処理をバックグラウンドに任せることができます。 。もちろん、現在ではメッセージ リストを使用して、ユーザーが送信した各リクエストをメッセージ キューに保存し、ユーザーが喜んでページを閉じた後も、実際には背景がそのままになっています。メッセージを 1 つずつ受信して、キューからリクエストを削除して操作します。この記事では、異種混合メソッドを使用して、ユーザーを待たせることなくバックグラウンドで実行される操作を実現します。
まず、リクエスト エントリを作成する必要があります:
送信されたデータ
バックグラウンドに送信
それが完了したことをユーザーに伝えます
次に、バックグラウンド ハンドラーが必要ですユーザーがオンラインかどうかを確認します。操作には影響しません:
<?php ignore_user_abort(true); set_time_limit(0);
受信データ
データ処理
さて、問題は、コードの最初の部分で、どのように「バックグラウンドに送信」するかということです。この関数は、ノンブロッキング リクエストを通じて実装されます。つまり、アクセス可能な URL を作成し、この URL で 2 番目のプログラムを実行し、リクエストを通じて URL を要求することで、2 番目のプログラムの自動実行をアクティブにします。
次にコードを直接見てみましょう:
// 远程请求(不获取内容)函数 function _sock($url) { $host = parse_url($url,PHP_URL_HOST); $port = parse_url($url,PHP_URL_PORT); $port = $port ? $port : 80; $scheme = parse_url($url,PHP_URL_SCHEME); $path = parse_url($url,PHP_URL_PATH); $query = parse_url($url,PHP_URL_QUERY); if($query) $path .= '?'.$query; if($scheme == 'https') { $host = 'ssl://'.$host; } $fp = fsockopen($host,$port,$error_code,$error_msg,1); if(!$fp) { return array('error_code' => $error_code,'error_msg' => $error_msg); } else { stream_set_blocking($fp,true);//开启了手册上说的非阻塞模式 stream_set_timeout($fp,1);//设置超时 $header = "GET $path HTTP/1.1\r\n"; $header.="Host: $host\r\n"; $header.="Connection: close\r\n\r\n";//长连接关闭 fwrite($fp, $header); usleep(1000); // 这一句也是关键,如果没有这延时,可能在nginx服务器上就无法执行成功 fclose($fp); return array('error_code' => 0); } }
この関数は fsockopen を使用して URL にアクセスしますが、アクセスする際に URL に表示されているコンテンツを取得する必要はありません。アクセス要求を送信します。要求が到着したらすぐにこのアクセスを閉じます。この利点は、訪問した URL から信頼できる情報が返されるまで待つ必要がないため、時間が節約されることです。このコードの実行時間は 0.1 ~ 0.2 秒であり、通常の訪問者にはほとんど知覚されません。したがって、使用するときは、この関数と対応する URL を呼び出すだけで済みます。ただし、ここではデータ送信部分は提供されていません。実際には、$header に投稿コンテンツを追加するだけです。
fsockopen に加えて、curl も実際にはこの効果を実現できます。一部のホストは fsockopen をサポートしていないため、curl を使用してそれを実現できます。
function _curl($url) { $ch = curl_init(); curl_setopt($ch,CURLOPT_URL,$url); curl_setopt($ch,CURLOPT_RETURNTRANSFER,1); curl_setopt($ch,CURLOPT_TIMEOUT,1); $result = curl_exec($ch); curl_close($ch); return $result; }
このコードの重要な点は、タイムアウトを 1 秒だけ提供することです。これは、返されたコンテンツが受信されたかどうかに関係なく、curl がリクエストを行うことを意味し、アクセスは 1 秒後に閉じられるため、この関数のデータは 1.0 ~ 1.1 秒の間です。しかし、ユーザーにとって、データ処理が必要なアプリケーションの場合、1 秒の待ち時間はほとんど無視されます。よりシンプルでわかりやすいコードを使用したい場合は、curl を選択して実装することができます。

ホット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 にアップグレードする方法について説明します。

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

このチュートリアルでは、PHPを使用してXMLドキュメントを効率的に処理する方法を示しています。 XML(拡張可能なマークアップ言語)は、人間の読みやすさとマシン解析の両方に合わせて設計された多用途のテキストベースのマークアップ言語です。一般的にデータストレージに使用されます

あなたが経験豊富な PHP 開発者であれば、すでにそこにいて、すでにそれを行っていると感じているかもしれません。あなたは、運用を達成するために、かなりの数のアプリケーションを開発し、数百万行のコードをデバッグし、大量のスクリプトを微調整してきました。

JWTは、JSONに基づくオープン標準であり、主にアイデンティティ認証と情報交換のために、当事者間で情報を安全に送信するために使用されます。 1。JWTは、ヘッダー、ペイロード、署名の3つの部分で構成されています。 2。JWTの実用的な原則には、JWTの生成、JWTの検証、ペイロードの解析という3つのステップが含まれます。 3. PHPでの認証にJWTを使用する場合、JWTを生成および検証でき、ユーザーの役割と許可情報を高度な使用に含めることができます。 4.一般的なエラーには、署名検証障害、トークンの有効期限、およびペイロードが大きくなります。デバッグスキルには、デバッグツールの使用とロギングが含まれます。 5.パフォーマンスの最適化とベストプラクティスには、適切な署名アルゴリズムの使用、有効期間を合理的に設定することが含まれます。

文字列は、文字、数字、シンボルを含む一連の文字です。このチュートリアルでは、さまざまな方法を使用してPHPの特定の文字列内の母音の数を計算する方法を学びます。英語の母音は、a、e、i、o、u、そしてそれらは大文字または小文字である可能性があります。 母音とは何ですか? 母音は、特定の発音を表すアルファベットのある文字です。大文字と小文字など、英語には5つの母音があります。 a、e、i、o、u 例1 入力:string = "tutorialspoint" 出力:6 説明する 文字列「TutorialSpoint」の母音は、u、o、i、a、o、iです。合計で6元があります

静的結合(静的::) PHPで後期静的結合(LSB)を実装し、クラスを定義するのではなく、静的コンテキストで呼び出しクラスを参照できるようにします。 1)解析プロセスは実行時に実行されます。2)継承関係のコールクラスを検索します。3)パフォーマンスオーバーヘッドをもたらす可能性があります。

PHPの魔法の方法は何ですか? PHPの魔法の方法には次のものが含まれます。1。\ _ \ _コンストラクト、オブジェクトの初期化に使用されます。 2。\ _ \ _リソースのクリーンアップに使用される破壊。 3。\ _ \ _呼び出し、存在しないメソッド呼び出しを処理します。 4。\ _ \ _ get、dynamic属性アクセスを実装します。 5。\ _ \ _セット、動的属性設定を実装します。これらの方法は、特定の状況で自動的に呼び出され、コードの柔軟性と効率を向上させます。
