Mám kód PHP, ktorý musí bežať na pozadí (bez cronjobov alebo podobných možností), ktorý je úplný, ale nemôžem ho nazvať na pozadí. Skúšam nasledovné:
$files = $_GET["files"];
$id = $_GET["id"];
pclose(popen("start /B D:\server\php\php.exe D:\server\www\whatever\importat\import.php?files=".$files."&id=".$id." 2>nul >nul", "r"));
Ale „nikdy to nebeží. Ak pôjdem a bežím import.php manuálne to funguje bezchybne.
PS: Nemôžem zmeniť import.php.
Pomoc?
odpovede:
0 pre odpoveď č. 1Mám riešenie:
To, čo robím, je volanie PHP do dávky a jeho spustenie pomocou popenu:
$phpBatch = "progress_import_".$idImport.".bat";
$myPhp = fopen($phpBatch, "w") or die("Error opening file!");
$batchContent .= "@echo OFF n";
$batchContent .= ""D:\path\to\php.exe" D:\path\to\progress_import.php ".$idImport." ".$_SESSION["numberFiles"]." ";
pclose(popen("start /B D:\path\to\".$phpBatch."", "r"));
A vo vnútri progress_import.php
používam:
$id = $argv[1];
$numberFiles = $argv[2];
Chytiť parametre.
Dúfam, že niekomu pomáha.