2

Linux CentOS サーバーで Web サイトをプログラミングしています (ルート アクセス権を持つ VPS プランにアップグレードする予定です)。Web サイトの多くは、自動化されたスクリプトに依存しています。

自動化プロセスの開始について 2 つの質問があります。

  • 常に実行されるデーモン スレッドなどを開始する方法はありますか。メール アカウントが新しいメールを受信するたびに、スクリプトを実行する必要があります。毎分実行できる cron ジョブがあることは知っていますが、常に実行されるスクリプトが理想的であるため、新しい電子メールが到着した瞬間にスクリプトを実行できます。

  • メインプログラムと同時に実行されるスレッドをコード (理想的には PHP) から開始する方法はありますか? 私が使用しているスクリプトでは、imap_open を使用して電子メール アカウントに接続していますが、毎回数秒かかります。ただし、複数の同時実行スクリプトを同時に起動できれば、理想的にはプログラムの時間を短縮できます。これを行う方法はありますか?

これらの質問についての助けをいただければ幸いです。

4

3 に答える 3

4

常に実行されるデーモン/サービスを確実に作成できます。開始チュートリアルについては、

http://www.netzmafia.de/skripten/unix/linux-daemon-howto.html

デーモンは SMTP (これをサポートするために利用可能な既存のライブラリがあります) を実装して、電子メール アカウントで新しい電子メールを定期的にチェックし、それに応じて動作させることができます。

これは、Pythonでこれらすべてを達成する方法について説明するSOからの回答付きの質問です

Linux で Python スクリプトをサービスまたはデーモンのように実行する方法

于 2012-06-01T23:28:31.283 に答える
3

最初の部分については、2 つの簡単な解決策があります。

  1. Vixie cron@reboot開始仕様を使用して、再起動時に標準ユーザーとしてデーモンを開始します。これと毎分の cron ジョブは、デーモン スタイルのサービスをユーザーとして簡単に実行できる唯一のメカニズムです。

  2. procmailメール配信ごとに新しいスクリプトを開始するために使用します。ここでの欠点は、procmailすべての電子メールで実行され、新しいプログラムが開始されることです。1 秒あたり 100 通の電子メールを受信して​​いる場合、これは、inotify(7)寿命の長いプログラムに新しいプログラムについて警告するために使用するデーモンと比較して、深刻な障害になる可能性があります。メール。

fork(2)2 番目の部分では、システム コールのラッパーを探します。プログラムをきれいに半分 (親と子) に分割し、それ以降はそれぞれが独立して実行できるようにします。将来、子と親が再び通信する必要がある場合は、PHP がスレッド化された実行をサポートしているかどうかを確認してください。

于 2012-06-01T23:31:19.927 に答える
0

incronはどうですか?あなたのケースでそれを使用する方法があるかもしれませんが、ファイルシステムイベントを生成する必要があります (たとえば、新しいファイルを作成します)。

于 2012-06-01T23:35:51.137 に答える