abstract:(1)在PHP里使用shell_exec的函數(shù),以shell的方式,啟動一個獨(dú)立的PHP腳本執(zhí)行。這種方式,其實(shí)相當(dāng)于在Web服務(wù)器處理過程中,獨(dú)立起了一個shell進(jìn)程處理你的任務(wù)。這里,需要特別注意的是shell_exec的服務(wù)器安全,注意校驗(yàn)參數(shù),小心避免被帶入shell命令中。這個是比較容易實(shí)現(xiàn)的方式。(2)使用PHP實(shí)現(xiàn)一個Server,監(jiān)聽一個端口,為Web端提供服務(wù)。這里的實(shí)現(xiàn)方式有
(1)在PHP里使用shell_exec的函數(shù),以shell的方式,啟動一個獨(dú)立的PHP腳本執(zhí)行。這種方式,其實(shí)相當(dāng)于在Web服務(wù)器處理過程中,獨(dú)立起了一個shell進(jìn)程處理你的任務(wù)。這里,需要特別注意的是shell_exec的服務(wù)器安全,注意校驗(yàn)參數(shù),小心避免被帶入shell命令中。這個是比較容易實(shí)現(xiàn)的方式。
(2)使用PHP實(shí)現(xiàn)一個Server,監(jiān)聽一個端口,為Web端提供服務(wù)。這里的實(shí)現(xiàn)方式有很多,通常要配合擴(kuò)展,例如原生的pthread(多線程),開源擴(kuò)展swoole等等。
直接在web程序里使用多線程,是不恰當(dāng)?shù)?,web請求通常有時間限制,例如timeout默認(rèn)是30秒。你如何保證,在線程任務(wù)執(zhí)行完之前,它的父進(jìn)程仍然在工作?