2010-09-01 80 views
1

我正在做一個PHP工具供我個人使用。但是PHP非常慢,我需要做的工作需要很多時間,所以我將在C++中創建一個守護進程並將其保留在後臺(它將以VPS運行)。如何開始在類Unix操作系統(如Linux)中編寫守護進程?

PHP會通過一個簡單的TCP套接字連接到守護進程(我會嘗試設計/使用一個簡單的IPC協議)以提交任務。守護進程將用一個簡單的FIFO隊列管理任務。 PHP將只有開始的任務,但它不會等到它結束,因爲它可能需要幾分鐘時間(PHP會監控任務 - 但這是另一個話題)。

Web/PHP界面根本不會成爲問題。但是我沒有關於unix守護進程編程的經驗。我在linux上用C++編寫了簡單的控制檯程序,所以我只需要一本手冊/書籍/指南和建議來開始unix守護進程的開發。

謝謝。

+0

http://www.netzmafia.de/skripten/unix/linux-daemon-howto.html – Anycorn 2010-09-01 16:51:02

+0

「非常長」是什麼意思?您可能要考慮使用除C++之外的其他語言,例如Python或Perl,它們都具有可靠的工具。 – Ether 2010-09-01 16:57:46

+0

我的意思是需要很多時間。我更喜歡使用C++,因爲我有經驗,我不知道Python或Perl。另外我認爲C++速度更快,而且處於更低的水平。 – NeDark 2010-09-01 17:28:59

回答

5

http://www.enderunix.org/docs/eng/daemon.php提供了一個相當全面但很簡短的示例代碼,它似乎涵蓋了所有重要的部分。如果你願意花一些錢在紙上(值得,恕我直言),「UNIX環境下的高級編程(第二版)」中有更深入的描述。

上面的鏈接並不涉及init腳本,但是您可以通過一些搜索來解決這個問題 - 您只需要一些啓動守護程序代碼的方法以及稍後發送信號的方式 - 通常,您可以編寫守護進程的PID到/ var/run/XXX文件。

+2

上面的鏈接只有一個分支。規範方法和我認爲「UNIX環境下的高級編程」的建議是,你應該分叉兩次。 http://stackoverflow.com/questions/881388/what-is-the-reason-for-performing-a-double-fork-when-creating-a-daemon – JimB 2010-09-01 18:58:11