スケジュールされた実行タスクは、ドキュメントの定期的な公開、ジャンク情報の定期的なクリーンアップなど、Web サイトにとって比較的重要なタスクです。今日の Web サイトのほとんどは PHP 動的言語を使用して開発されており、PHP の実装に関する決定はありません。 Java や .Net などの AppServer の概念と http プロトコルはステートレス プロトコルです。PHP はユーザーによってのみトリガーされて呼び出すことができます。呼び出された後は自動的にメモリから抜け出し、常駐メモリはありません。
推奨: 「php ビデオ チュートリアル 」
PHP を使用してスケジュールされたタスクを実装する必要がある場合は、次の解決策があります:
1. シンプルで直接的で無謀なタイプ
<?php ignore_user_abort();//关掉浏览器,PHP脚本也可以继续执行. set_time_limit(0);// 通过set_time_limit(0)可以让程序无限制的执行下去 ini_set('memory_limit','512M'); // 设置内存限制 $interval=60*30;// 每隔半小时运行 do{ //ToDo sleep($interval);// 等待5分钟 } while(true);
欠点: 一度起動すると PHP ホストを終了しない限り制御できないため、ハッカーでない限りこの方法は使用しないでください。
2. シンプルな制御可能なタイプ
config.php<?php return 1; ?>
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);
3. シンプルに改良された
<?php $time=15; $url="http://".$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI']; /* function */ sleep($time); file_get_contents($url); ?>
4. サーバーのスケジュールされたタスク
UnixPlatform
Unix システムを使用している場合は、PHP スクリプトの先頭に特別なコード行を追加して実行できるようにする必要があります。これにより、システムが内容を認識できるようになります。種類 プログラムはスクリプトを実行しようとしています。 Unix システム用に追加されたコードの最初の行は、Windows でのスクリプトの実行には影響しないため、この方法を使用してクロスプラットフォーム スクリプトを作成することもできます。1. PHP を使用して Crontab でスクリプトを実行する
Crontab で通常のシェル スクリプトを呼び出すのと同じように (Crontab の特定の使用法)、PHP プログラムを使用して PHP を呼び出しますこのスクリプトは、次のように myscript.php を 1 時間ごとに実行します。# crontab -e 00 * * * * /usr/local/bin/php /home/john/myscript.php
2. URL を使用して Crontab でスクリプトを実行する
PHP スクリプトを URL によってトリガーできる場合は、lynx、curl、または wget を使用して Crontab を設定できます。 次の例では、Lynx テキスト ブラウザを使用して URL にアクセスし、PHP スクリプトを 1 時間ごとに実行します。 Lynx テキスト ブラウザは、デフォルトで会話モードを使用して URL を開きます。ただし、以下に示すように、lynx コマンド ラインで -dump オプションを使用して、URL 出力を標準出力に変換します。00 * * * * lynx -dump http://www.sf.net/myscript.php
*/5 * * * * /usr/bin/curl -o temp.txt http://www.sf.net/myscript.php
*/10 * * * * /usr/bin/wget -q -O temp.txt http://www.sf.net/myscript.php
5. ini_set 関数の使い方の詳しい説明
PHP ini_set は、関数の実行時に有効になる php.ini の値を設定するために使用されます。スクリプトが終了すると設定は無効になります。 php.ini ファイルを開かずに設定を変更できるため、仮想空間では非常に便利です。 関数形式:string ini_set(string $varname, string $newvalue)
@ ini_set('memory_limit', '64M');
@ini_set('display_errors', 1);
@ini_set('session.auto_start', 0);
@ini_set('session.cache_expire', 180);
@ini_set('session.use_cookies', 1);
@ini_set('session.use_trans_sid', 0);
PHP のスケジュールされたタスクは非常に興味深いものです。上記は、この記事で提供されるソリューションの一部です。この記事のアイデアを通じて独自のソリューションを開発することもできます。困っているすべての人に役立つことを願っています。
以上がPHP でスケジュールされたタスクを実装する 5 つの方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。