2012-01-28 53 views
3

我的網站上,我有一個功能,讓你可以跟蹤其他用戶的更新。當用戶更改其信息時,任何關注他或她的人都將通過電子郵件發送此更改。發送形式PHP腳本,用戶根本不知道或看到

我已經設置好php以便更改數據庫中的信息,然後搜索用戶聯繫人以查看誰跟隨他/她,並將電子郵件發送給通知他們更改的人。

自從添加此通知功能以來,我遇到的問題是,頁面加載(表單發佈到自身)的insead並幾乎立即顯示更改(取決於有多少人跟隨特定用戶),它可以爲頁面加載幾個munites並顯示更新(因爲PHP在頁面重新加載之前發送所有電子郵件)。

我該如何設置它,發送電子郵件的腳本在後臺運行,用戶無需等待電子郵件在頁面重新載入前發送,甚至可能退出的網站,仍然有電子郵件發送,如果仍然腳本仍在運行?

P.S.我所有的編程和開發技能都是自學的,所以我不知道很多術語.....你可能不得不貶低你的回答,這樣我才能理解你在說什麼。不便之處,非常感謝您的幫助。

+0

[的Gearman](http://www.php.net/gearman)似乎細溶液卸載任務非網絡服務器過程的衝擊。 – Wrikken 2012-01-28 19:30:05

+0

@gearman我不知道這是什麼意思.... – user1165664 2012-01-28 19:32:13

+0

鏈接是點擊.... – Wrikken 2012-01-28 19:34:14

回答

1

我很驚訝,它需要幾分鐘僅僅發送一些電子郵件,但無論如何你可以在至少在四個方面做到這一點:

  • 使用Ajax將表單數據發送到發送一個單獨的腳本電子郵件雖然形式帖子正常
  • 的形式爲劇本叉(需要pcntl
  • 通過PHP發出異步請求將自己的網頁(無論是設置有捲曲低超時,或打開一個套接字)
  • 使用exec('script-that-sends-emails args >> some-other-file 2>&1 &');
+0

需要很長時間,原因是,用戶可以將其通知或者收到電子郵件或文本。如果他們想發送一個文本,因爲我不會在註冊期間詢問他們有什麼服務提供者,所以我讓腳本運行一個for循環,該循環只發送給四個主要提供者(verizon,att,sprint,tmobile) 。這個for循環嵌套在一個while循環中,它發送給跟隨這個特定用戶的所有人。因此,如果用戶有100人關注他或她,並且他們都希望發短信,那麼該腳本會在頁面重新加載之前發送400封電子郵件。 – user1165664 2012-01-28 19:36:09

+0

這樣做很不禮貌..你應該得到一個短信服務器。 – 2012-01-28 19:47:25

相關問題