php - 通过cron运行脚本来创建文件

时间:2012-04-07 00:03:34

标签: php cron

我编写了一个脚本来生成一些XML,我使用一种非常基本的方法将XML的结果保存到文件中:

<?php
// start the output buffer to cache the content
ob_start();

//SOME PHP CODE HERE TO GENERATE CONTENTS ON THE FILE

$cachefile = "results.xml";
// open the cache file for writing
$fp = fopen($cachefile, 'w'); 
// save the contents of output buffer to the file
fwrite($fp, ob_get_contents()); 
// close the file
fclose($fp); 
// Send the output to the browser
ob_end_flush(); 

当我手动转到包含我服务器上脚本的文件的URL时,脚本会运行并创建文件。

但是,当我尝试将其作为cron作业运行时,脚本会运行并且输出是通过不保存到文件而生成的。

任何想法为什么?

3 个答案:

答案 0 :(得分:0)

这可能是一个许可问题。尝试chmod 777和re-cron。

答案 1 :(得分:0)

我可以想象,cronjob只请求标题而不是正文,因此apache根本不会生成一个,因此ob保持空...你可以尝试以下方法:

<?php
$out = ''

//SOME PHP CODE HERE TO GENERATE CONTENTS ON THE FILE
$out .= 'content' . "\n";
$out .= 'more' . "\n";
$out .= 'more' . "\n";
$out .= 'more' . "\n";
$out .= 'more' . "\n";

$cachefile = "results.xml";
// open the cache file for writing
$fp = fopen($cachefile, 'w'); 
// save the contents of output buffer to the file
fwrite($fp, $out); 
// close the file
fclose($fp); 
// Send the output to the browser

print$out;

答案 2 :(得分:0)

正在创建文件,但是在根目录中而不是在运行脚本的目录中。

在浏览器文件中运行是在正确的目录中创建的,通过cron运行并在根目录中创建。

可能需要指定完整路径。