如何让PHP自动写入文件?

时间:2017-03-20 07:33:07

标签: php

我想自动或至少每秒将网页保存到文本文件。所以我写了一个像这样的PHP文件:

<?php

$homepage = file_get_contents('www.example.com');
echo $homepage;


$myfile = fopen("file.txt", "w") or die("Unable to open file!");

while(true) {

    fwrite($myfile, $homepage);

}
    fclose($myfile);

?>

但它没有用 在while循环停止之前,不会写入该文件。 有人可以帮助我吗?我需要PHP一直运行或至少运行几分钟。我怎么能这样做?

4 个答案:

答案 0 :(得分:1)

我会选择这样的东西(虽然没经过测试)

<?php
header("Refresh:30"); // The page will be refreshed every 30 seconds
                    // To avoid max_execution_time errors

$myfile = "file.txt";

for ($i=0; $i < 30; $i++) { 
    $homepage = file_get_contents("http://www.example.com");
    echo $homepage;
    file_put_contents($myfile, $homepage);
    sleep(1); // Do it every second
}

如果一秒钟太长,您可以使用usleep代替

答案 1 :(得分:1)

那是因为你没有在循环中关闭文件。你也应该加一些延迟。将其更改为:

<?php
$homepage = file_get_contents('www.example.com');
echo $homepage;
while(true) {
    $myfile = fopen("file.txt", "w") or die("Unable to open file!");
    fwrite($myfile, $homepage);
    fclose($myfile);
    sleep(1);
}
?>

请注意,如果您在网络服务器上运行此功能,则会超出时间限制。

答案 2 :(得分:1)

首先,也许您应该考虑在循环中使用sleep来最小化性能影响。每次写入后,您应调用flush将数据保存到磁盘上。还存在以DOS攻击形式超载目标站点的风险,因此您应该注意其后果。

答案 3 :(得分:1)

这个没有经过测试,但应该说明......但老实说,你最好用Ajax和计时器来做这件事。

header("Refresh:60");

function writeToPage($page,$file){

    $content = file_get_contents($page);

    file_put_contents($file,$content);

}

$page = "www.example.com";

$file = "file.txt";

$write = true;

while( $write === true ) {

    sleep(5);

    writeToPage($page,$file);

}
相关问题