Mam kod PHP, który musi działać w tle (bez cronjobs lub podobnych opcji), który jest kompletny, ale po prostu nie mogę go wywołać w tle. Próbuję:
$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 „nigdy nie działa. Jeśli pójdę i ucieknę import.php ręcznie działa bezbłędnie.
PS: Nie mogę zmienić import.php.
Wsparcie?
Odpowiedzi:
0 dla odpowiedzi № 1Mam rozwiązanie:
To, co robię, to nazywanie PHP wewnątrz partii i uruchamianie go za pomocą popen:
$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"));
I wewnątrz progress_import.php
używam:
$id = $argv[1];
$numberFiles = $argv[2];
Aby złapać parametry.
Mam nadzieję, że pomaga komuś.