我發現pthreads
不適用於Web環境。我使用PHP7.1在FPM上Linux Debian我也使用Symfony 3.2
。所有我想做的事,例如:使用FPM在PHP7上異步/線程
- 用戶提出的要求和
PUT
文件(即1GB) - PHP服務器接收文件並處理它。
- 立即返回
true
用戶(jsonResponse
)沒有等待處理上傳的文件 - 後來,當處理文件完成(移動,複製,複製任何你想要的)只需要添加一個事件或背景不回調,並通知用戶。
現在。爲此,我創建了Console Command
。我從後臺執行Process('bin/console my:command')->start();
,並執行我的處理。但是這對我來說是用火箭筒殺死一隻蒼蠅。我必須將許多變量傳遞給此可執行命令。
所有我想創建另一個線程,只是返回給用戶而無需等待處理。
你可能會說這是重複。並指向pthreads
。 但是 pthreads 聲明它僅用於CLI。 pthreads的最後一個版本也不適用於symfony。 (致命錯誤)。
我停留在這一點上有疑問,如果我要留在創建每個上傳的文件或移動到python -> django
你不想要線程。你想要一個工作隊列。看看Gearman或類似的東西。 – Gordon
我真的很喜歡它。我期待着doc。我認爲這會更適合我的需求。我在我的問題中還提到了**隊列**,但我稍後再刪除。在看到Gearman和隊列機制後,我決定去找工作隊列。此外,請閱讀說明 - 例如,每次執行2個線程,並假設400客戶端進入服務器,它將運行800個線程。這不是我想要的。 Gearman是這裏的關鍵。我會深入研究它。謝謝。哦!你可以添加這個作爲答案:) – xangr
也許你正在尋找異步處理:https://gist.github.com/LeonanCarvalho/62c6fe0b62db8a478f502f84c5734c83 – LeonanCarvalho