У меня есть PHP-скрипт, который выглядит так:
if(file_exists("temp.txt")){
$myfile = fopen("temp.txt", "a") or die("Unable to open file!");
}
else{
$myfile = fopen("temp.txt", "w") or die("Unable to open file!");
}
date_default_timezone_set("America/New_York");
$date = date('m/d/Y h:i:s a', time());
$text = $date . PHP_EOL;
fwrite($myfile, $text);
fclose($myfile);
Когда я запускаю приведенный выше скрипт в Powershell, используя
php myscript.php
Текстовый файл создан и записан в.
Если я попытаюсь запустить тот же файл с
Start-Job ScriptBlock {php myscript.php}
Я получу ответ как
Но мой текстовый файл никогда не записывается в. Это похоже на Start-Job
никогда не запускает мой PHP-скрипт.
Как я могу получить Start-Job
запустить PHP скрипты?
Хорошо, я напишу ответ на все это:
Из теста (с вашим сценарием в качестве источника) я добавил эхо, чтобы получить что-то в Receive-Job в powershell.
Было очевидно, что сценарий выполняется должным образом, но не в ожидаемом каталоге.
Поэтому я добавил getcwd()
в эхо, и это показывает мне, что рабочая папка для работы (или блок скриптов) — это каталог моих документов), и я нашел там файл с моим домом \ документами.
Вот последний сценарий, с которым я закончил:
echo "I'm running in ".getcwd()." !\n";
if(file_exists("temp.txt")){
$myfile = fopen("temp.txt", "a") or die("Unable to open file!");
}
else{
$myfile = fopen("temp.txt", "w") or die("Unable to open file!");
}
echo "Ok, file was opened: \n".print_r(fstat($myfile),1)."\n";
date_default_timezone_set("America/New_York");
$date = date('m/d/Y h:i:s a', time());
$text = $date . PHP_EOL;
$r=fwrite($myfile, $text);
echo "Write in file returned $r \n";
fclose($myfile);
echo "File closed\n";
И это вывод с Powershell:
Start-Job -ScriptBlock { D:\wamp\bin\php\php5.4.3\php.exe D:\wamp\bin\php\php5.4.3\test.php }
Id Name State HasMoreData Location Command
-- ---- ----- ----------- -------- -------
51 Job51 Running True localhost D:\wamp\bin\php\php5....
И извлекая вывод:
Receive-Job 51
I'm running in C:\Users\my_name\Documents !
Ok, file was opened:
Write in file returned 24
File closed
Надеюсь, это поможет.
Других решений пока нет …