對於長文本感到抱歉。單獨程序中的PHP調用函數
我正在尋找一個想法來觸發執行PHP函數(在不同的目錄中,測試並在同一目錄中),當具體的行爲發生時。
系統是Debian和php框架yii。
使用API,我們從遠程服務器接收新數據,併爲我們收到的數據中的特定值,我需要在單獨的進程中啓動功能。無需等待完成。 由於API響應時間,我無法將此功能集成到其中,並且集成會導致API無法使用。
我已經閱讀了Stackoverflow和許多其他示例的幾十個答案。
對於測試,我只是試圖創建新的文件夾在特定的位置和文件沒有創建(權限問題,我認爲,但無法確認,因爲它使得它,如果從主代碼完成 - api)。 這是應該做以下幾點:
- 通從API接收功能
- 創建文件夾,如果不存在
- 調用內部類使用FPDF來打印PDF文件它2個參數。
- 保存文檔並將其郵寄給PHPMailer。
不能使用pcntl_fork,因爲它需要額外的安裝(我不允許這樣做)。
涵蓋的主題:
- 與pcntl_fork分叉(停止執行上達到它)
- POPEN/pclose函數,EXEC,proc_open/proc_close(沒有回答,也無法確認其實際輸入功能)。
當然這種情況排除使用include和require的可能性。
無法釋放API代碼,但這裏是我要求它做的事:
background.php
$docs_dir='test_folder';
if (!file_exists('/var/www/created_documents/'.$docs_dir))
{
mkdir('/var/www/created_documents/'.$docs_dir, 0777, true);
chmod('/var/www/created_documents/'.$docs_dir, 0777);
}
它什麼都不做。
幾個例子,我用在api代碼跳轉到它(許多人在工作中被刪除)。
$proc = popen('php ' . __DIR__ . '/background.php &', 'r');
return $proc;
while (!feof($proc))
{
$data = fgets($proc);
var_dump($data);
}
exec("php background.php");
$cmd = "php background.php";
$timer = popen("start ". $cmd, "r");
pclose($timer);
exec($cmd . " > /dev/null &");
pclose(popen("php background.php &","r"));
聽起來像是使用隊列,堆疊作業並在後臺處理它們。 –
很難在dar中開發,用這兩行記錄你的文件錯誤:ini_set(「log_errors」,1); ini_set(「error_log」,path_to_file); –