我想自动或至少每秒将网页保存到文本文件。所以我写了一个像这样的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一直运行或至少运行几分钟。我怎么能这样做?
答案 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)
答案 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);
}