ホームページ バックエンド開発 PHPチュートリアル PHP_PHP チュートリアルにおけるスケジュールされたタスクの実装原理

PHP_PHP チュートリアルにおけるスケジュールされたタスクの実装原理

Jul 21, 2016 pm 03:14 PM
php 導入 タスク 原理 存在する 対処する タイミング 成し遂げる マニュアル 関連している 知識 単純 プラン 接続する

PHP マニュアルに従って、関連する知識を簡単に紹介します。

1. 接続処理:

PHP 内部では、システムは接続ステータスを維持し、そのステータスには 3 つの状況が考えられます:

0 - NORMAL (通常)
1 - ABORTED (異常終了)
2 - TIMEOUT (タイムアウト)

NORMAL 状態で PHP スクリプトが正常に実行される場合、接続は有効です。リモート クライアントが切断されると、ABORTED ステータス フラグがオンになります。リモート クライアント接続の中断は、通常、ユーザーが [STOP] ボタンをクリックしたことによって発生します。接続時間が PHP の制限時間を超えると、TIMEOUT ステータス フラグがオンになります。

クライアントが切断されたときにスクリプトを終了する必要があるかどうかを決定できます。スクリプトの出力を受け入れるリモート ブラウザがない場合でも、スクリプトを完全に実行すると便利な場合があります。デフォルトでは、リモート クライアント接続が失われたときにスクリプトが終了します。この処理は、php.ini のignore_user_abort によって、または Apache .conf 設定の対応する "php_valueignore_user_abort" およびignore_user_abort() 関数によって制御できます。 PHP がユーザーの中断を無視するように指示されていない場合、 register_shutdown_function() によってシャットダウントリガー関数が設定されていない限り、スクリプトは中断されます。このクローズ トリガー関数により、リモート ユーザーが STOP ボタンをクリックし、スクリプトがデータを再度出力しようとすると、PHP は接続が中断されたことを検出し、クローズ トリガー関数を呼び出します。

スクリプトは、組み込みのスクリプト タイマーによって中断される場合もあります。デフォルトのタイムアウト制限は 30 秒です。この値は、php.ini で max_execution_time を設定するか、Apache .conf 設定の対応する「php_value max_execution_time」パラメータまたは set_time_limit() 関数を設定することで変更できます。カウンタがタイムアウトすると、上記の接続中断状況と同様にスクリプトが終了し、事前に登録されたシャットダウン トリガー関数もこの時点で実行されます。シャットダウン トリガー関数では、connection_status() 関数を呼び出すことで、タイムアウトによってシャットダウン トリガー関数が呼び出されたかどうかを確認できます。タイムアウトによりシャットダウントリガー関数が呼び出された場合、関数は 2 を返します。

注意すべき点の 1 つは、ABORTED 状態と TIMEOUT 状態が同時に有効になる可能性があるということです。これは、PHP にユーザー終了アクションを無視するように指示する場合に可能です。 PHP はユーザーが切断されたことを認識しますが、スクリプトはまだ実行中です。実行時間制限に達すると、スクリプトは終了し、設定されたシャットダウン トリガー関数も実行されます。この時点で、関数 connection_status() が 3 を返すことがわかります。

2. 関連関数:

intignore_user_abort ( [bool settings] )
この関数は、クライアントの切断によってスクリプトが中止されるかどうかを設定し、前の設定を返し、引数なしで呼び出すことができます。現在の設定を変更し、現在の設定のみを返します。

int connection_status ( void )
特定のファイルを定期的に更新するために、 TRUE を返します。プログラムが必要です 自動的に実行するには、ignore_user_abort() と crontab の 2 つのメソッドをインターネットから見つけました。 set_time_limit(0) と sleep($interval) を使用したignore_user_abort() 関数は、プログラムの自動実行と更新を実現できます。例



コードをコピー

コードは次のとおりです:

ignore_user_abort(); // クライアントが切断されても (ブラウザを閉じるなど)、PHP スクリプトは実行を続行できます set_time_limit( 0); // 実行時間は無制限、PHP のデフォルトの実行時間は 30 秒です。 set_time_limit(0) により、プログラムは無制限に実行できます$interval=60*5; // 5 分ごとに実行しますdo{ $fp = fopen('test.txt', 'a');
fwrite($fp,'test');
sleep($interval); // 5 分間待機します。その間 (本当)


上記のページを実行して閉じる限り、プログラムは実行を続けます。

Linux では、より簡単な方法があり、それが crontab コマンドです。

crontab コマンドの機能は、特定の時間間隔でいくつかのコマンドの実行をスケジュールすることです。
crontabの使い方: crontab [ -e | -l | -r ] ファイル名 -e: タスクの編集 -l: タスク情報の表示 -r: 実行予定タスクの情報の削除

crontab 形式:
* * * * * コマンド
コマンドタイムシェアリングの日、月、週を実行するには

crontab の例:

*/5 * * * * lynx http://www.jb51.net
5 分ごとに www.jb51.net にアクセスします

0 8 * * * lynx http://www.jb51.net
毎朝 8 時に www.jb51.net にアクセスしてください

0 10 6 * 1-5 lynx http://www.jb51.net
毎月 6 日そして、毎週月曜日から金曜日の午前 10 時に www.jb51.net にアクセスしてください

0 5 7 8 * lynx http://www.jb51.net
8 月 7 日の午前 5 時に www.jb51.net にアクセスしてください

上記のいくつかの特別な意味:
「*」は値の範囲内のすべての数値を表し、「/」はすべてを表し、「*/5」は 5 単位ごとを表し、「-」は特定の数値から特定の数値までを表し、「,」は複数の離散的な数値を区切ります。

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/326376.html技術記事 PHP マニュアルに従って、関連する知識を簡単に紹介します。 1. 接続処理: PHP 内では、システムは接続ステータスを維持し、そのステータスには 3 つの状況が考えられます: 0 - NORMAL (通常) 1 -...
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、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:27 PM

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

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

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

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

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

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 は、

CakePHP クイックガイド CakePHP クイックガイド Sep 10, 2024 pm 05:27 PM

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

See all articles