搜索获取一下资料

fflush,按照C语言标准,这个函数应该只能用于“写”方式打开的文件,而不能用于“读”方式打开的文件。换句话说,如果是f=fopen("yin.txt","r");,则fflush(f)是没有意义的。就像一个数除以零一样,没有意义,不应该这样做。如果做了,结果不可预知。

在写文件时,如果大量的调用fputc、fprintf等,则并不是每次调用都会立即进行磁盘操作,而是把这些操作记录到缓冲里面,等到一定时候,批量的写入磁盘。何谓“一定时候”?情况有以下三种。

1、缓冲满了,不得不写入磁盘,从而腾出空间。

2、文件被关闭(或者类似情况),此时如果再不写入,以后就没机会了。

3、手动操作,也就是使用fflush。比如你的程序出错了,马上就要异常退出,此时为了把错误信息保存到文件中,在fprintf之后就要手动的操作,确保信息被保存到磁盘里。如果不调用fflush,则有可能这些数据还在缓存中,程序异常退出时,这些信息就丢失了。

在读文件时,没有必要进行手动操作。因此也没有必要进行fflush。

总结:php中如果出现大量写入操作,或者操作的文件较大时,写入函数并不是每次调用都会立即进行磁盘操作而是把这些操作记录到缓冲里面,如果出现异常或者需要优先写入,这时就可以用fflush。在读文件时,没有必要进行手动操作。因此也没有必要进行fflush。对普通的小文件或少量写入操作无效

更多相关文章

  1. thinkPHP5下扩展encryptedData解密算法文件的注意事项
  2. 如何加载json文件?
  3. 使用AJAX将数据发送到.php文件,如何从中获取数据?
  4. 使用javascript将文件输入到php文件
  5. 迭代文件夹中的CSV文件,并使用PHP将数据加载到MySQL中
  6. 用于cdn集成的文件类型的域更改正则表达式
  7. PHP基础 文件流
  8. 教你如何利用php.exe运行php文件
  9. 如何在表单操作中执行PHP函数?

随机推荐

  1. mysql分组后取各组前五条
  2. MYSQL社区版安装手册
  3. 有没有办法确定是由Web应用程序(php进程)执
  4. mysql客户端工具使用
  5. PHP Array - 保存到MySQL时的奇数数据
  6. mysql 触发器 自动补全字段
  7. MySql-cluster中NDBD进程占用内存能否通
  8. JAVA使用JDBC连接MySQL数据库
  9. 如何在VB.net中进行备份和恢复mysql数据
  10. win7下Django的MySql安装,问题解决方案