2015-09-06 113 views
4

如果服務器通過命令行(在Ubuntu服務器上)調用PHP腳本,該腳本的多個實例是否可以同時運行?就我而言,這是一個使用FFmpeg轉換上傳視頻的PHP腳本。因此,如果有八個用戶在同一時間(或非常接近它)上傳視頻,那麼該PHP腳本的八個實例會同時運行,還是會一個接一個地排隊?如果他們排隊,是否有辦法改變它,以便多個實例可以同時運行?服務器調用的PHP腳本是否異步運行?

+0

同一腳本的多個實例確實可以同時運行。 – ScottMcGready

+0

謝謝 - 這就是我需要知道的一切!如果你留下一個答案,我會選中它。 – CGriffin

回答

5

同一腳本的多個實例確實可以同時運行。需要注意的是,性能會降低同時運行的更多腳本。另外你應該注意,如果你正在與一個數據庫進行交互,並且你正在寫一個表,那麼這個表不能被異步地完成,並且會導致一個隊列的形成(儘管是一個小問題,取決於正在進行的操作)。

證明

您可以通過創建中調用exec()的地方,並執行另一個PHP腳本PHP腳本檢查這個(或實際上同一個 - 但要小心,不要製造一個無限循環)。也許將時間戳分散到文件或數據庫中,以便可以充分地看到它發生的情況。

+1

「性能會降低同時運行的更多腳本。」大多數PHP腳本使用的是任何服務器資源的一小部分,所以它可以是在可測性能下降之前同時運行的不少腳本。對於運行多個腳本的某些任務將提高整個性能 – 2015-09-07 00:04:37

+0

@Dagon取決於代碼的好壞);)。如果你編寫的代碼非常笨重,它確實有可能造成瓶頸。即使真的乾淨的代碼仍然可以運行多次,而不是僅僅一次(但我同意,這種差異可以忽略不計)。在他去之前,我覺得這是值得指出的,並且做了一些瘋狂的「運行×100000000」腳本。 – ScottMcGready

+1

另外在我的情況下,PHP腳本使用shell_exec調用FFmpeg,所以...是的...可以絕對降低服務器性能:) – CGriffin