刚刚遇到一个 php 读写文件的问题。

bear63 2014-09-07 10:43:01
			<?php
require_once('tongji.php');
$now_hour=date("H");
echo '时间:'.$n_time.'时间:'.$now_hour;
if((int)$n_time==(int)$now_hour)
{
echo '调用1';
require_once('all_tongji.php');
}else{
echo '调用2';
$filename='http://'.$_SERVER['SERVER_NAME'].':'.$_SERVER["SERVER_PORT"];
$lines = file($filename."/admin2013/all_get_tongji.php");
foreach ($lines as $line_num => $line_txt) {
$text=$text.$line_txt;
}
$file_tongji=fopen("all_tongji.php","w+") or showmsg("写入文件 1 失败!",'1','');
fputs($file_tongji,$text);
fclose($file_tongji);
sleep(5); //请注意这个代码。
$fpx=fopen("tongji.php","w+") or showmsg("写入文件 2 失败!",'1','');
fputs($fpx,'<?php $n_time'. "= '".$now_hour."';?>");
fclose($fpx);

require_once('all_tongji.php');
}
?>


在本地测试是不需要 sleep(5); 这个代码。
上传到服务器,就需要这个延时代码才会成功。
否则老是提示 写入文件 2 失败。
百思不得其解。
...全文
177 7 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
xuzuning 2014-09-09
  • 打赏
  • 举报
回复
我不清楚你遇到了什么问题,不过向 require 的文件写,这本身是不妥当的 因为 php 解释器在读取文件后并不立即关闭 再说程序是在网上运行的,你并不能保证不会有其他实例也在写 你这是再做一个文件方式缓存,判断是否需要更新缓存应检查缓存文件(all_tongji.php)的最后修改时间(filemtime)
happyckx 2014-09-09
  • 打赏
  • 举报
回复
看看用require换掉require_once
bear63 2014-09-09
  • 打赏
  • 举报
回复
引用 2 楼 fdipzone 的回复:
require_once('all_tongji.php'); 为什么 有两个,逻辑有问题。
all_tongji.php 由于统计的数据比较多,每次访问都要卡20秒,所以我把统计结果生成一个文件 all_tongji.php,如果生成的时间跟当前时间不一致,就再生成一次,否则,就直接读取 all_tongji.php 文件。有错吗?
智商众筹 2014-09-08
  • 打赏
  • 举报
回复
不了解,关注一下 我瞎猜一个,fputs只是向系统发送一个写入要求,不等写入完毕直接返回,这样如果服务器的文件写入慢就出现楼主的问题了?
傲雪星枫 2014-09-07
  • 打赏
  • 举报
回复
require_once('all_tongji.php'); 为什么 有两个,逻辑有问题。
傲雪星枫 2014-09-07
  • 打赏
  • 举报
回复
失败时apache log提示什么?

21,894

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧