我有一个看起来像这样的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脚本?
答案 0 :(得分:0)
好的,我会写一个关于所有这些的答案:
从测试开始(以脚本为原点)我添加了一些echo来获取powershell中的Receive-Job。
很明显,脚本按预期运行,但不在预期目录中。
所以我在echo中添加了一个getcwd()
,这告诉我作业(或scriptblock)的工作目录是我的文档目录)然后我在那里找到了我的文件目录。
这里是我最后的剧本:
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
希望它会有所帮助。