2

PHPでタスクをスケジュールすることは可能ですか? のように、jQuery の日付ピッカーで日付を選択して送信したいと考えています。その日付が今日の日付と一致すると、たとえば (または他の PHP スクリプト) メールが送信されます。日付はユーザーによって異なります。また、すべてのユーザーは、実行する予定のタスクを多数持つことができます。

編集

OS は Linux で、ウェブサイトは godaddy.com でホストされています。また、これらのタスクをいつ実行するかを選択するのはエンド ユーザーなので、コマンド ラインを使用できます。

編集

Ruby on Rails または Django ソリューションも歓迎されます。

4

3 に答える 3

1

Unix サーバーを使用している場合は、 を試してくださいat

http://www.manpagez.com/man/1/at/

これは、PHP とは完全に分離されており、外部コマンドで shell_exec() を実行する必要があるという点で、cron と同様に機能します。ただし、シンプルなコマンドライン インターフェイスを備えています。cron ジョブと同様に、atジョブは再起動後も存続します。

使用するat場合は、スケジュールしたいタスクを実行するために別のスクリプトを作成する必要があります。

例:

shell_exec("echo 'php script.php' | at -t 201208011234.56");

2012 年 8 月 1 日 12:34:56 に script.php を実行します。

于 2012-07-04T23:17:11.153 に答える
1

スケジュールされた時間にタスクを実行するには、サーバー側で何らかのプロセスが必要です。

一般的なアプローチは、タスク情報を何らかのデータベースに保存し、cron ジョブでタスク キューを時々チェックすることです。これは非常に信頼性が高く安全です。

展開される環境に関する詳細情報がなければ、より良い答えを出すことはできません。例えば:

  • 対象OS
  • ホスティングの種類 (専用、共有、クラウド)
  • あなたは管理者権限を持っていますか?
  • インターネットに公開されていますか?

とにかく、共有ホスティング環境ではそれができない可能性が高いですが、shell_exec を呼び出す Web サイトを持つことは、セキュリティの観点からはあまり賢明ではないと言わざるを得ないため、サイトがインターネットに公開されている場合は避けます。 .

優れたホスティング プロバイダーは、crontab でなくても、何らかのバックグラウンド タスク スケジューラを利用できるようにする必要があります。ホスティングプロバイダーがそうしていない場合、ギャップを埋めるためにスタントを引っ張ろうとするのはおそらく悪い考えです.

[アップデート]

元の投稿の編集部分で述べたように、goaddy.com でホストしていますが、クライアントにこれらのコマンド ラインなどを実行させることはできません。他の言語でも解決策はありますか?

私はもう Godaddy でホストしていませんが、彼らはコントロール パネルに "Cron Manager" を持っていました。正しい goDaddy cron セットアップは

/usr/bin/wget -O - -q "http://yoursite.com/cron.php" > /dev/null 2>&1 

Cron Manager のコマンド オプションで。この「cron.php」は、送信する電子メールがあるかどうかを確認するためにタスク キューをチェックします (タスク キューは、顧客がスケジュールしたタスクを記録するデータベース内の単純なテーブルです)。

于 2012-07-04T23:30:33.000 に答える
0

メインのインデックスページまたは標準のインクルードファイルにチェックを追加するだけで、cronなしでこれを行うことができますが、これは、実際にcronにアクセスできない場合(共有ホスティングなど)のみです。このチェックでは、未解決のアクションのリストを取得して実行します。

if (time_since_last_run > 5*60) // minutes
    shell_exec("/usr/bin/php /var/www/check-tasks.php &");

最善の解決策は、cronを使用して、システム内のスケジュールされたアイテムをチェックして実行するPHPスクリプトを起動することです。これは、wgetを介して行うか、PHPを呼び出すことで直接行うことができます。

私が持っている1つの共有ホスティングサイトは、cronとwgethttp://othersite.example.comを介して別のサーバーから外部でスケジュールされています

crontabエントリの例:

0 * * * * wget -O - -q -t 1 http://othersite.example.com/cron.php
于 2012-07-04T23:19:40.500 に答える