2017-02-01 6 views
-1

私はデータベースをスキャンして自動的に操作を行いますが、cronを使用しないでスクリプトを実行します。私はPHPをプログラミング言語として、MySQLをDBMSとして使用しています。ここでは、私が開発しようとしている機能についての簡単なアイデアを述べましたPHPでcronなしでサーバーから応答を得る方法はありますか?

私は24時間の時間で動的な時間にユーザーに通知する必要があるモジュールがあります。つまり、ユーザーが1つの投稿を投稿していて、24時間以内に返事がない場合は、自動的に通知されます。したがって、1人のユーザーが8:30 PMに投稿した場合、彼は2日目に同時に通知を受け取ります。 2人目のユーザーが午後7時半に投稿した場合、午後7時30分に2日目に通知を受けます。

まず、cronを理想的にはスケジュールに従ってスクリプトを実行するスケジューラの種類に設定することが考えられます。その場合、スクリプトを自動的に実行するために特定の間隔をスケジュールする必要がありますが、ここでは間隔の固定時間はありません。私は分でcronを設定することでそれを行うことができることも知っていますが、サーバが5〜10分ごとにスクリプトを実行できるようにすることはできません。だから、私は代替(可能であれば)を探して、スクリプトが自動的に実行され、DBをスキャンし、時間をフェッチし、24時間後に到達した場合に通知を送信するPHPまたはサーバーに、 。

私は、しかし、私は便利

を見つけることができませんあまりにも、私はどのような方法があるかどうかはわからないというのが私の同僚の1からだけでなくソケットを使用しての提案を得ました。だから、もし皆さんが答えを見つけるのを手伝ってくれたら、改善のための私の研究に本当に大きな助けになるでしょう。

ありがとうございます!

+0

'5〜10分ごとにサーバーがスクリプトを実行できるようにするのはなぜですか?このスクリプトがチェックして通知するだけの場合は? – JustOnUnderMillions

答えて

3

クローンジョブです。

はあなたが、私は24時間で、通知を得るために、このユーザーを たい」のようなものを得ることができないわけですか「しかし、ここで私は間隔のいずれかの修正時間を持っていないだろう」今から、それはこのようには動作しません」場合thatsの、それはのようなものを解決することができるロジックの問題、
だ場合:あなたがあるため技術的な制限のcronジョブを持つことができない場合は

$users2notify = getUsersWithAction24hoursAgo(); 
notifyUsers($users2notify); // only notify actual needed users 

、私はホスティングの切り替えをお勧めします。 cronjobsは本当にうまく仕事をするので、実際にcronjobsの適切な代替手段はありません。

PS:あなたのお友達の提案は、問題をJavascriptにシフトするだけで無視してください。 cronを使用して

0

は最も単純でPHPっぽいソリューションですが、あなたが本当にcronを嫌う場合は、24時間で要求を遅らせますnodejsアプリケーションを起動することができます:あなたはhttp://localhost:5000/delay?replayTo=http://localhost:80/che‌​ckUser?id=$idOfUserT‌​oCheckに要求を送信し、nodejsは、getを行います24時間後に依頼する。 nodejsアプリケーションを開発する必要がありますが、複雑ではありません。

この例では、5000はnodejsアプリケーションがリッスンするポートです。使用されていないポートでもかまいません。

関連する問題