Windows でスケジュールされたタスクを使用して PHP プログラムを自動的に実行する例_PHP チュートリアル

WBOY
リリース: 2016-07-13 10:30:07
オリジナル
1003 人が閲覧しました

いわゆるタスクプランとは、ユーザーが事前に設定したアプリケーションをコンピューターが自動的に呼び出すことで、ユーザーの操作を簡素化するものです。 Windows 2000 のタスク スケジューラ (*NIX の cron プログラムに相当します。ここでは詳しく説明しません) を使用すると、ニーズを満たす最適な時間に実行するスクリプト、プログラム、またはドキュメントをスケジュールできます。以下では Windows 2000 を例に説明します。

具体的には、タスク スケジューラを使用して自動的に実行する必要がある場合は、次の手順を実行する必要があります:

「スタート」ボタンをクリックし、「プログラム」→「アクセサリ」→「システムツール」→「タスクスケジューラ」(または「設定」→「コントロールパネル」→「タスクスケジューラ」)を選択して、Windows 2000タスクスケジューラを起動します。
「タスクスケジュール」ウィンドウの「タスクスケジュールの追加」アイコンをダブルクリックしてシステムの「タスクスケジュールウィザード」を起動し、「次へ」ボタンをクリックして、指定されたプログラムリストで自動的に実行する必要があるアプリケーションを選択します。 「次へ」ボタンをクリックします。
適切なタスク スケジュール名を設定し、このタスクを自動的に実行する頻度 (毎日、毎週、毎月、1 回、コンピューターを起動するたび、ログインするたびなど) を選択し、「」をクリックします。次へ」ボタン。
この時点で、システムはユーザーに、何日、何時、実行できる時間帯など、プログラムを実行する特定の時刻を設定するように求めます。必要に応じて設定するだけで済みます。 。
次に、システムは、今後システムが自動的に実行できるように、適切なユーザー名とパスワードを設定するようにユーザーに要求します (図 5 を参照)。
最後に、「完了」ボタンをクリックするだけで、対応するタスクが Windows
2000 のタスク スケジューラに追加されます。その後、システム時刻と関連条件が設定されると、タスクは自動的に「記憶」されます。ユーザーの計画が一致すると、ユーザーが指定したアプリケーションが自動的に呼び出され、非常に便利です (Windows 2000 を起動するたびに、タスク スケジューラが自動的に起動し、バックグラウンドで実行され、ユーザーの計画が確実に実行されるようになります)時間通りに)。
ここで、作成したばかりのタスクが成功するかどうかをテストしてみましょう。「php」プログラム アイコン (図 6 を参照) を右クリックし、ポップアップ メニューで「実行」を選択します。通常の状況では、このようにアクティブ化されていれば、プログラム アイコンは正常に起動できます。操作が失敗した場合は、ユーザーとパスワードが正しく設定されているかどうかを確認し、システム リソースを節約するために「タスク
スケジューラ」サービスが開始されているかどうかを確認できます。これが操作の失敗の原因です。見つけるのに長い時間がかかりました。また、「システムログ」を確認して、動作失敗の原因を確認することもできます。

さて、タスク計画の応用例をたくさん話しましたが、本題に移りましょう。以下に 2 つの例を紹介します。
1. PHP を定期的に実行します

次のコードを編集し、test.php として保存します:

コードをコピーします

コードは次のとおりです: $fp = @fopen("test.txt", "a+");
fwrite($fp, date("Y-m-d H:i:s") . "PHP を定期的に実行しましょう!n" ) ;

fclose($fp)

?>


タスク プランを追加し、このステップでコマンドを入力します (図 2 を参照):

コードをコピーします

コードは次のとおりです: D:php4php.exe -q D:php4test.php

1分ごとに実行する時間を設定して、このタスクを実行します。

ここで、d:php4test.txt ファイルの内容が成功したかどうかを確認してみましょう。内容が以下のようであれば、成功おめでとうございます。


コードをコピーします

コードは次のとおりです:2003-03-03 11:08:01 PHP を定期的に実行しましょう。 2003-03-03 11:09:02 PHP を定期的に実行しましょう!
2003-03-03 11:10:01 PHP を定期的に実行しましょう!
2003-03-03 11:11:02 PHP を定期的に実行しましょう!


2. MYSQL に自動バックアップを実現させます
次のコードを編集し、backup.php として保存します。圧縮したい場合は、rar.exe をコピーします。

コードをコピーします

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


if ($argc != 2 || in_array($argv[1], array('--help', '-?'))) {
?>
バックアップ Ver 0.01、i32 上の Win95/Win98/WinNT/Win2000/WinXP 用
Copyright (C) 2000 ptker All Rights Reserved.
これはフリー ソフトウェアです。
GPL ライセンスに基づいて変更および再配布することを歓迎します

バックアップ MySQL データベース用の PHP シェル スクリプト

使用法: <オプション>

<オプション>バックアップしたいデータベース名を指定できます。
--help を使用しますか、それとも -?オプションを選択すると、このヘルプを表示して終了できます。
} else {
$dbname = $argv[1];
$dump_tool = "c:\mysql\bin\mysqldump";
$rar_tool = "d:\php4\rar";
@exec("$dump_tool --opt -u user -ppassword $dbname > ./$dbname.sql");
@exec("$rar_tool a -ag_yyyy_mm_dd_hh_mm $dbname.rar $dbname.sql");
@unlink("$dbname.sql");
エコー「バックアップが完了しました!」;
}
?>


一任务计划を追加、在(図2に示されているように)この一步输入力コマンド:
复制码代码如下:

D:php4php.exe -q D:php4backup.php データベース名

時間は毎日 1 回実行されるように設定されており、その後このタスクが実行されます。
最後に、データ パッケージ名と現在の時間で構成される rar ファイルが生成されます。觍、读者自由に自己喜欢的を去ってください!
以上は原著です。结合本人实贱、补充说明如下:

如果出现错误:

试着設置任务帐户信息時に出た错误

指定の错误:

0x80070005:拒否绝访问
您は実行要求の操作の制限

「4.次にシステムは、システムが今後自動的に実行できるように、ユーザーに適切なユーザー名と秘密コードを設定することを要求します。ここでは、「システム」ユーザーの場合、秘密コードは空にするのが最適です。
このシステムの制限は非常に高く、管理者に比べて高い必要があり、コマンドを実行する際には一時的に乱用する必要はありません、これは何の条件もなく実行できることを示しています、この制限は核心进程都を殺します行こう

上面 2、追加の任務务划、この一步入力コマンド:

复制代码

代码如下:D:php4php.exe -q D:php4test.php

正确形式应である


复制代码

代码如下:"D:php4php.exe" -q "D:php4test.php"

つまり、パスは二重引用符で囲む必要があります。

私は最近、チェス、カード ゲーム、RPG ゲームなど、いくつかの PHP ゲーム プロジェクトを作成しましたが、そのすべてに多かれ少なかれ情報を定期的に更新するためのメカニズムが必要です。たとえば、チェスやカード ゲームのプレーヤーのタイムアウト検出などです。モンスターの更新、血液の自動回復、タスクの期限切れ、ランキングの更新など、RPG ゲームでよく使用されます。 PHP にはメモリ常駐プログラムがないため、処理にいくつかの困難があります。

いくつかのピアの実装方法を参照します。通常のアプローチは、特定のプロジェクトのニーズに応じてデータベースを定期的に更新する補助プログラムを C++、Python、Java などで作成することです。でも
そうするのはとても面倒です。まず第一に、これらの補助プログラムには別の言語を知っているプログラマーの介入が必要であり、必然的に開発コストとリスクが増加します。第二に、異なる言語のプログラマ間での共同デバッグは非常に面倒で、進捗が非常に遅いです。補助プログラムとフロントデスクの関係は非常に密接であるため、基本的には一緒に開発およびデバッグする必要があります。

私はプロジェクト内のタスクを定期的に実行する方法を採用しました。このソリューションの方が優れていると感じます。これは一度限りのタイプで、コードはすべて PHP に引き継がれます。

まず、データベース内に task という名前のテーブルを定義します。このテーブルには、exectime と

url の 2 つのフィールドがあります。このうち、exectimeはunix型のtime、urlはstring型です。各データはタスクを表しており、具体的な意味は「このタスクは実行時に実行され、実行アドレスは url である」ということになります。補助プログラムはこのテーブルを毎秒監視し、現在時刻とテーブル内の各タスクの時刻を比較し、その時刻に達すると URL を要求し、タスクの実行が完了し、タスクが削除されます。等々。

これの利点は、PHP プログラム開発者が、実行したい Web ページを必要なときに自由に実行できることです。このプログラムは 1 回作成するだけで済み、同様のプロジェクトで十分に使用できます。

このプログラムをWindowsサービスとarchlinuxデーモンにして、プロジェクト全体のクロスプラットフォームを実現しました。

補足コンテンツ:

タスクは次のように開始されます。ゲームのバックエンドにログインした後、サーバー制御ページに移動して、現在のサーバーの実行状況を確認してオンにします。サーバーのオンまたはオフ。サーバーを起動すると関連タスクがタスク リストに挿入され、サーバーを閉じるとタスク リストがクリアされます。人工的な形状です。

タスクの繰り返しが可能になるのは、これらのタスクがphpによってタスクテーブルに挿入され、タスクテーブル内の各タスクは一度実行された後に補助プログラムによって削除されるため、各タスクは一度しか実行できません。ループ内で実行する必要があるタスクがある場合、唯一の方法は、タスクを実行する PHP コードのタスク リスト (つまり、タスクの URL) にそれ自体を再挿入することです。


タスクタイムアウト、タスクタイムアウトはデータテーブルではタスク実行間のタイムアウトと、タスクページリクエスト時のタイムアウトの2種類に分けられます。ヘルパー プログラムは毎回、現在時刻までのすべてのタスクを実行するため、最初のケースは発生しません。 2 番目のケースでは、補助プログラムがこのページへのアクセスが成功したかどうかを自動的に判断します。サーバー エラーが返された場合、または接続が確立できなかった場合、タスクは削除されずに保持され、次のサイクルで再試行されます。


http://www.bkjia.com/PHPjc/767613.html

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/767613.html技術記事いわゆるタスクプランとは、ユーザが予め設定したアプリケーションプログラムをコンピュータが自動的に呼び出すことにより、ユーザの操作を簡略化するものである。 Windows 2000 のタスク スケジューラの利用 (... に非常に似ています)
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!