是否每次执行以下这句,都读到同样的东西?还是每次会往下读?
$mstrData = fread($mobjFP, 4096)

解决方案 »

  1.   

    不会的  你这代码不会死循环的  文件内是有游标的,fread不是没次都从头读文件的...  当你的$mstrData不符合XML标准的时候程序将退出..
      

  2.   

    我上面说的游标,就是C里所说的文件指针的含义 你可以参考一下手册中fseek函数的相关说明
      

  3.   

    是否每次执行以下这句,都读到同样的东西?还是每次会往下读?
    $mstrData = fread($mobjFP, 4096)答案是:每次会往下读
      

  4.   

    另外一个问题:是否存在某种情况,比如用户太多的情况,而文件又读不到时,会等待很长时间然后导致down机?
      

  5.   

    我的问题就是:
    页面代码似乎出了问题,正常情况下一切OK,如果参数mobjFP的所在文件无法访问(该文件放在别的server上而该server所在城市全城停电的情况),整个网站访问非常非常慢,甚至当机。
    调查原因时尝试将该页改成空白页后,一切又正常了。奇怪的是: 我试着将参数换成任意的别的显然不存在的文件。看起来也只是读不到结果,并不会出现当机情况。。有好的建议么?
      

  6.   

    哦,是这样啊。这是正常现象,
    1、我试着将参数换成任意的别的显然不存在的文件。看起来也只是读不到结果,并不会出现当机情况。。
    这是因为文件打不开,$mobjFP无效。至多报个错
    2、如果参数mobjFP的所在文件无法访问(该文件放在别的server上而该server所在城市全城停电的情况),整个网站访问非常非常慢,甚至当机。
    使用文件函数打开远程文件。使用http或ftp协议。处理过程中将不断的进行尝试,直到成功或php超时建议
    1、视远程文件更新周期,考虑在本地缓存文件
    2、设置php超时时间在适当的限度
      

  7.   

    感谢!!那是否表示:我在文件的前边加上set_time_limit(5) ,该问题就可以彻底解决?
      

  8.   

    @set_time_limit(5);
    $fp = fopen("http://.....); // 5秒钟大不开则超时@set_time_limit(10);
    // 打开后10秒钟不能读取和解析完则超时代码中判断是否超时可用
    if(connection_timeout())
      超时
      

  9.   

    如果set_time_limit()在你的服务器上可用,基本上这就可以解决当机问题,不过一个缺点是访客看到的是
    脚本超过最大运行时限
    的服务器错误。
    你可以通过register_shutdown_function()注册一个方法来处理超时情况,可以有一个比较友好的界面。