ホームページ バックエンド開発 PHPチュートリアル PHP でスケジュールされたタスクを実装するためのいくつかの方法の比較

PHP でスケジュールされたタスクを実装するためのいくつかの方法の比較

Jun 20, 2016 pm 01:02 PM
crontab

PHP でスケジュールされたタスクを実装するいくつかの方法

ここ数日、PHP を使用して Web ページを定期的にクロールするサーバー アプリケーションを作成する必要があり、オンラインで解決策を検索したところ、質問に対する OSchina の回答が非常に興味深いものであることがわかりました。

いくつかの解決策が提案されています。要約は次のとおりです。

1.単純、直接的、無謀なタイプ

ignore_user_abort();//关掉浏览器,PHP脚本也可以继续执行.
set_time_limit(0);// 通过set_time_limit(0)可以让程序无限制的执行下去
$interval=60*30;// 每隔半小时运行
do{
    //ToDo  
    sleep($interval);// 等待5分钟
}while(true);
ログイン後にコピー
欠点: 一度開始すると、PHP ホストを終了しない限り制御できません。ハッカーでない限り、この方法は使用しないでください。

2. シンプルで制御可能

config.php

return 1;<!--?php
return 1;
?-->
ログイン後にコピー
cron.php

ignore_user_abort();//关掉浏览器,PHP脚本也可以继续执行.
set_time_limit(0);// 通过set_time_limit(0)可以让程序无限制的执行下去
$interval=60*30;// 每隔半小时运行
do{
$run = include 'config.php';
if(!$run) die('process abort');
 //ToDo 
 sleep($interval);// 等待5分钟
}while(true);
ログイン後にコピー

config.php の return 0 を変更してプログラムを停止します。実行可能な方法は、config.php ファイルと特別なフォームを操作し、HTML ページを通じていくつかの変数を設定することです。

短所: システムリソースを消費し、長時間実行すると予期せぬ隠れた危険を引き起こす可能性があります。たとえば、メモリ管理の問題などです。

3. 簡易改良型

$time=15;
$url="http://".$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'];
/*
    function
*/
sleep($time);
file_get_contents($url);
ログイン後にコピー
PHP スクリプトのスリープは、一定時間経過後に自身にアクセスすることで実行を継続します。これにより、各 PHP スクリプトの実行時間が長くなりすぎることがなくなります。タイムアウト。

この方法では、php ファイルの各ループが独立して実行されるため、time_out 制限を回避できますが、プロセスを終了できるように、上記のように制御コードを追加するのが最善です。

4. cronTab タイプ

プログラムでは、popen を使用して、同時実行性を制御するために実行中のプロセスの数を決定します
cControlJobNum(1); 
while (true) 
{ 
        <your code> 
        <动态sleep> 
            
            
} 
function cControlJobNum($job_limit) { 
                $cmd = @popen("ps -ef | grep '{$_SERVER['SCRIPT_FILENAME']}' | grep -v grep | wc -l", 'r'); 
                $num = @fread($cmd, 512); 
                $num += 0; 
                @pclose($cmd); 
                if($num > $job_limit) 
                { 
                        exit; 
                } 
                return true; 
}
ログイン後にコピー

5. BAE または sae の cron サービスを使用します。

6. vps を購入し、crontab を使用します

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、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)

crontab のスケジュールされたタスクが実行されない理由をご存知ですか? crontab のスケジュールされたタスクが実行されない理由をご存知ですか? Mar 09, 2024 am 09:49 AM

crontab のスケジュールされたタスクが実行されない原因まとめ 更新日時: 2019年1月9日 09:34:57 作成者: Hope on the field. この記事では主に、crontab のスケジュールされたタスクが実行されない原因をいくつかまとめて紹介します。考えられるトリガーごとに解決策が示されており、この問題に遭遇した同僚にとって一定の参照と学習価値があります。必要な学生はエディターに従って一緒に学習できます。序文: 最近仕事でいくつかの問題に遭遇しました。crontab のスケジュール設定タスクが実行されませんでした後、インターネットで検索したところ、インターネットでは主に次の 5 つのインセンティブについて言及されていることがわかりました: 1. crond サービスが開始されていない Crontab は Linux カーネルの機能ではなく、cron に依存しています。

Systemd と Crontab を使用して Linux システムでタスクの並列実行を実装する方法 Systemd と Crontab を使用して Linux システムでタスクの並列実行を実装する方法 Sep 26, 2023 pm 06:37 PM

Systemd と Crontab を使用して Linux システムでタスクの並列実行を実装する方法 Linux システムでは、タスクの並列実行はシステムの効率とパフォーマンスを向上させる重要な手段の 1 つです。この記事では、Systemd ツールと Crontab ツールを使用して Linux システムでタスクの並列実行を実装する方法を紹介し、具体的なコード例を示します。 1. Systemd の概要 Systemd は、Linux システムの起動プロセスとサービス管理を管理するために使用されるツールです。設定経由

Linux で crontab ファイルのコメント付けと crontab の sh 実行の落とし穴を解決する方法 Linux で crontab ファイルのコメント付けと crontab の sh 実行の落とし穴を解決する方法 May 15, 2023 pm 09:58 PM

Linux アノテーション crontab ファイルと crontab 実行の落とし穴. 多くの crontab は、特定のタスクを定期的に実行するために Linux で書かれていることが判明しました. 現在、次の要件があります: 要件: 特定の crontab タスクにアノテーションを付けることです. 方法: crontab を次の場所に追加するだけですタスクの前に「#」を追加するだけです。例:54**sunecho「runat5after4everysunday」 コメント: #54**sunecho「runat5after4everysunday」 とても簡単です。ピット 1 に遭遇、最近の次の例を見てください

Linuxのcrontabエラーログを読む方法 Linuxのcrontabエラーログを読む方法 Mar 07, 2023 am 09:29 AM

Linux で crontab エラー ログを表示する方法: 1. ファイル ディレクトリ "/var/log/cron" を表示します; 2. "tail -f /var/log/cron" コマンドを使用して、実際のファイルの末尾を表示しますtime; 3. 「vim /var /log/cron」コマンドを使用すると、高度なテキスト ビューアで表示できます。

Systemd と Crontab を使用して Linux でアプリケーションを自動的に再起動する方法 Systemd と Crontab を使用して Linux でアプリケーションを自動的に再起動する方法 Sep 28, 2023 pm 03:35 PM

Systemd と Crontab を使用して Linux システムでアプリケーションを自動的に再起動する方法 Linux システムでは、Systemd と Crontab は 2 つの非常に重要なツールです。 Systemd はシステムおよびサービス マネージャーであり、Crontab は指定された時間にタスクを自動化するツールです。この記事では、具体的な例を使用して、Systemd と Crontab を使用して Linux システムでアプリケーションを自動的に再起動する方法を紹介します。 「いいえ」があるとします。

Systemd と Crontab を使用して Linux システムでシステムの自動起動を実現する方法 Systemd と Crontab を使用して Linux システムでシステムの自動起動を実現する方法 Sep 26, 2023 am 11:57 AM

Systemd と Crontab を使用して Linux システムでシステムの自動起動を実装する方法 はじめに: Linux システムでは、システムの再起動後に自動的に実行できるように、一般的に使用されるいくつかのサービスまたはスクリプトをシステムの自動起動に設定する必要があることがよくあります。この記事では、Systemd と Crontab という 2 つのツールを使用してシステムの自動起動を実現する方法と、具体的なコード例を紹介します。 1. Systemd の使用 Systemd は、Linux オペレーティング システムで一般的に使用されるシステムおよびサービスの管理です。

Systemd と Crontab を使用して Linux システムでスケジュールされたタスクの優先順位を設定する方法 Systemd と Crontab を使用して Linux システムでスケジュールされたタスクの優先順位を設定する方法 Sep 27, 2023 am 08:25 AM

Systemd と Crontab を使用して Linux システムでスケジュールされたタスクの優先順位を設定する方法には、特定のコード サンプルが必要です。Linux システムでは、スケジュールされたバックアップ ファイル、定期的なログ クリーニング、等ただし、タスクごとに優先順位が異なる場合があります。一部のタスクは時間通りに実行するためにより高い優先順位が必要ですが、一部のタスクは後で実行できます。この記事では、Systemd と Crontab を使用してタイミングを設定する方法を紹介します。

Linux Crontab エラー ログのトラブルシューティングのヒントの共有 Linux Crontab エラー ログのトラブルシューティングのヒントの共有 Mar 18, 2024 am 09:21 AM

LinuxCrontab エラー ログのトラブルシューティングのヒントは、Linux システムで共有されています。Crontab は、ユーザーが特定のタスクを定期的に実行するのに役立つ、非常に一般的に使用されるスケジュールされたタスク管理ツールです。ただし、Crontab の使用中にエラーが発生する場合があり、時間内に確認して解決する必要があります。この記事では、Crontab エラー ログのトラブルシューティングに関するいくつかのヒントと、特定のコード例を通じて問題を特定して解決する方法を紹介します。 Crontab ログの表示 まず、Crontab を表示できます。

See all articles