2012-01-28 22 views
3

私のサイトには、他のユーザの更新を追跡できる機能があります。ユーザーが自分の情報に変更を加えた場合、その変更をEメールで受け取ります。PHPスクリプトにフォームを送信して、ユーザが知りません。

phpがデータベースの情報を変更するように設定して、ユーザーの連絡先を検索して、誰が彼/彼女に従っているかを調べ、変更を通知しているユーザーに電子メールを送信します。

この通知機能を追加して以来私が抱えていた問題は、ページの読み込み(フォームの投稿自体)と変更をほぼ即時に表示することです(特定のユーザーの次の人数によって異なります)。ページが読み込まれ、更新が表示される(PHPがページを読み込む前にすべての電子メールを送信しているため)。

電子メールを送信するスクリプトがどこかで実行され、ページがリロードされる前に電子メールが送信されるのを待つ必要がなく、終了する可能性があるそれでもまだスクリプトが実行されている場合はメールを送信しますか?

P.S.私のプログラミングと開発のスキルはすべて自分自身で教えられていますので、多くの専門用語はわかりません.....あなたが話していることを理解できるように、あなたの回答をダンブルする必要があります。ご迷惑をおかけして申し訳ありません。ご協力いただきありがとうございます。

+0

[gearman](http://www.php.net/gearman)は、Webサーバー以外のプロセスにタスクの負荷を軽減するうえで最適なソリューションです。 – Wrikken

+0

@gearman私はそれが何を意味するか分かりません.... – user1165664

+0

リンクはクリックしています.... – Wrikken

答えて

1

私はそれだけでいくつかの電子メールを送信するために数分かかりびっくりだけど、とにかくあなたは、少なくとも4つの方法でこれを行うことができます:

  • 送信別のスクリプトにフォームデータを送信するために使用アヤックス電子メールフォームのポストは通常​​
  • pcntlが必要)
  • PHPを経由して、あなた自身のページへの非同期要求(cURLのに低タイムアウトを設定、またはソケットを開くのいずれか)
  • 使用exec('script-that-sends-emails args >> some-other-file 2>&1 &');を作るフォームスクリプトフォークを持っていながら、
+0

これは時間がかかりすぎる理由は、電子メールまたはテキストを受信するように通知を設定できるからです。彼らがテキストを送信したい場合は、私はどのサービスプロバイダにサインアップするのか尋ねないので、その番号の4つの主要プロバイダー(verizon、att、sprint、tmobile)に送信するforループを実行します。このforループは、この特定のユーザーに続くすべての人に送信するwhileループにネストされています。そのため、ユーザーが100人のユーザーを抱えていて、すべてテキストを入力したい場合、スクリプトはページがリロードされる前に400個の電子メールを送信しています。 – user1165664

+0

それをするのは失礼です。テキストメッセージングサーバーを手に入れてください。 –

関連する問題