Zend Framework 2で自動化されたphpプロシージャを実行するための最良の方法は何ですか?
データベース(mysql)で動作するようにタスクをスケジュールしたいのですが、HTTP呼び出しとは相互作用しません。つまり、サーバー側の実行のみと相互作用します。
手順をフレームワークモジュールで定義したいのですが、可能ですか?
モジュールで定義できない場合、外部でどのように行うことができますか?
Zend Framework 2で自動化されたphpプロシージャを実行するための最良の方法は何ですか?
データベース(mysql)で動作するようにタスクをスケジュールしたいのですが、HTTP呼び出しとは相互作用しません。つまり、サーバー側の実行のみと相互作用します。
手順をフレームワークモジュールで定義したいのですが、可能ですか?
モジュールで定義できない場合、外部でどのように行うことができますか?
PHPで作業を行う必要があるかどうかはわかりませんが、そうでない場合は、MySQLのイベントスケジューラを利用できます。これにより、データベース内でスケジュールされたジョブを実行できるようになります。このようなイベントを作成するための構文について詳しくは、こちらをご覧ください。次に例を示します。
CREATE EVENT some_event
ON SCHEDULE AT 12:34:00 EVERY DAY
DO
UPDATE my_schema.my_table SET my_column = my_column + 1;
私はそれをテストしなかったので、うまくいけばうまくいきます。
または、サーバーでcronジョブを作成することもできます。ほとんどの共有ホスティングプロバイダーでもこれを行うことができます。共有ホスティングを使用していない場合は、cronjobで次のように実行できます。
mysql -u username -p password -e "UPDATE my_schema.my_table SET my_column = my_column + 1";
繰り返しますが、テストされていませんが、正しい方向を示しているはずです。
もう1つのオプションは、cronjobを一緒に使用して、cURL
cronjobの実行時にURLが要求されるようにすることです。
curl http://yourdomain.com/yourtask
次に、Zend Frameworkでは、yourtask
ルートを設定するか、URLでモジュール、コントローラー、アクションを使用することができます。次に、PHPとZendFrameworkからデータベースクエリを送信します。
また、cURLによって呼び出されるスタンドアロンのPHPスクリプトを別の場所に置くこともできます。または、PHPを直接使用することもできます。そうすれば、それは世界中で利用可能である必要はありません。
ご覧のとおり、かなりの数のオプションがあります。あなたのケースに合ったものを選択してください。この選択を行うための十分な詳細がありません。