`
lfq618
  • 浏览: 87001 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

文件操作

    博客分类:
  • php
 
阅读更多

当文件正在用file_put_contents()函数写入状态时, 用file_size()函数不会计算出此文件的大小,因为此文件的缓存信息没有更新,需要调用clearstatcache() 函数来清理文件缓存信息,才能够准确计算出文件大小。

$ids = $this->dbAdapter->fetchAll("SELECT `pic_id` FROM `pic` WHERE `pic_state` = 0");
		if (empty($ids))
		{
			exit('No data to sync.');
		}		
		
		$xmlWriter = new XMLWriter();
		$xmlWriter->openMemory();
		$xmlWriter->setIndent(true);			
		
		$i=1;
		$flag = true;   //用于判断是否重新写入头文档
		foreach ($ids as $key => $idRow) 
		{
			if ($flag)
			{
				$xmlWriter->startDocument("1.0", "UTF-8");
				$xmlWriter->startElement("document");
				
				$xmlWriter->writeElement("pic_appid", "12345678");
				$xmlWriter->writeElement("updateperi", 86400);
				
				$xmlWriter->startElement("updatetime");
				$xmlWriter->writeCdata(date('Y-m-d'));
				$xmlWriter->endElement();	
				
				$flag = false; //将flag定义为false
			}
			
			
			$id = $idRow['pic_id'];
			$picRow = $this->dbAdapter->fetchRow("SELECT * FROM `pic` WHERE `pic_id` = '{$id}' LIMIT 1");
			
			$xmlWriter->startElement("item");
			
			$xmlWriter->writeElement("op", $picRow['pic_op']);
			
			$xmlWriter->startElement("pic_id");
			$xmlWriter->writeCdata($picRow['pic_id']);
			$xmlWriter->endElement();
			
			$xmlWriter->startElement("pic_url");
			$xmlWriter->writeCdata($picRow['pic_url']);
			$xmlWriter->endElement();
			
			$xmlWriter->startElement("pic_fromurl");
			$xmlWriter->writeCdata($picRow['pic_from_url']);
			$xmlWriter->endElement();
			
			$xmlWriter->startElement("pic_type");
			$xmlWriter->writeCdata($picRow['pic_type']);
			$xmlWriter->endElement();
			
			$xmlWriter->startElement("pic_tag");
			$xmlWriter->writeCdata($picRow['pic_tag']);
			$xmlWriter->endElement();
			
			$xmlWriter->startElement("pic_desc");
			$xmlWriter->writeCdata($picRow["pic_desc"]);
			$xmlWriter->endElement();
			
			$xmlWriter->startElement("pic_title");
			$xmlWriter->writeCdata($picRow["pic_title"]);
			$xmlWriter->endElement();
			
			$xmlWriter->startElement("pic_time");
			$xmlWriter->writeCdata($picRow['pic_time']);
			$xmlWriter->endElement();
						
			$xmlWriter->endElement();
			
			
			
			if (0 == $key%1000)
			{
				file_put_contents($this->xmlPath . "data_" . $i . ".xml", $xmlWriter->flush(true), FILE_APPEND);
				sleep(5);
				clearstatcache();
			}
			if (filesize($this->xmlPath . "data_" . $i . ".xml") > 5242880) {
				//文件大于5m,则换一个文件
				echo "the file need to change.<br />";
				$i++;
				$flag = true;
			} else {
				echo "The file no need change.<br />";
			}

 

 

clearstatcache()函数说明:

clearstatcache — 清除文件状态缓存

说明
void clearstatcache ( void )
当使用 stat(),lstat() 或者任何列在受影响函数表(见下面)中的函数时,PHP 将缓存这些函数的返回信息以提供更快的性能。然而在某些情况下,你可能想清除被缓存的信息。例如如果在一个脚本中多次检查同一个文件,而该文件在此脚本执行期间有被删除或修改的危险时,你需要清除文件状态缓存。这种情况下,可以用 clearstatcache() 函数来清除被 PHP 缓存的该文件信息。 

必须注意的是,对于不存在的文件,PHP 并不会缓存其信息。所以如果调用 file_exists() 来检查不存在的文件,在该文件没有被创建之前,它都会返回 FALSE。如果该文件被创建了,就算以后被删除,它都会返回 TRUE 

Note: 本函数缓存特定文件名的信息,因此只在对同一个文件名进行多次操作并且需要该文件信息不被缓存时才需要调用 clearstatcache()。 


受影响的函数包括 stat(),lstat(),file_exists(),is_writable(),is_readable(),is_executable(),is_file(),is_dir(),is_link(),filectime(),fileatime(),filemtime(),fileinode(),filegroup(),fileowner(),filesize(),filetype() 和 fileperms()。 

 

 

 

分享到:
评论

相关推荐

    电子科技大学linux环境编程作业2——李林——编写带缓存的文件操作类

    编写带缓存的文件操作类 从执行体程序库中的CLLogger类可知,通过缓存要写入文件中的数据,能够提高读写磁盘的性能 请编写一个文件操作的封装类,其要求如下: 需要提供open/read/write/lseek/close等函数的封装函数...

    MFC vc++6.0文件操作

    在Microsoft Foundation Classes (MFC) 中,VC++ 6.0 提供了强大的文件操作功能,使得开发者可以方便地进行各种文件操作,如打开、关闭、读取、写入、创建以及删除文件。MFC 是 Microsoft 为 Windows 平台上的 C++ ...

    Unity中Android的文件操作

    原数据存放在StreamingAsset中,首次启动复制到persistentDataPath,以后进行更新和读取都在persistentDataPath中使用File进行文件操作。需要恢复书序的时候从StreamingAsset中获取即可。

    matlab文件操作命令详解-matlab文件操作.doc

    matlab文件操作命令详解-matlab文件操作.doc matlab文件操作命令详解

    C#文件操作类

    C#文件操作类

    noip文件操作精讲

    Noip 文件操作精讲 Noip 文件操作是编程语言中最基本也是最重要的一部分,涉及到文件的输入输出操作。无论是 C 语言还是 C++ 语言,文件操作都是必不可少的。下面将对 Noip 文件操作进行详细的讲解。 文件操作的...

    java文件操作工具类

    java文件操作工具类是java中针对文件操作的一个工具类,可以方便的读取,下载,上传文件等操作,希望可以帮到大家。

    C#编程 文件操作 FileCopyPlan(源码)(源码)

    C#编程 文件操作 FileCopyPlan(源码)(源码)C#编程 文件操作 FileCopyPlan(源码)(源码)C#编程 文件操作 FileCopyPlan(源码)(源码)C#编程 文件操作 FileCopyPlan(源码)(源码)C#编程 文件操作 FileCopyPlan(源码)(源码)...

    使用内存映射文件加快文件操作速度

    ### 使用内存映射文件加快文件操作速度 在计算机科学领域,提高文件操作效率一直是系统优化的重要环节之一。本文将深入探讨如何通过使用内存映射文件(Memory-Mapped Files)来加速文件读写过程,特别是在使用VB...

    vb txt文件操作

    此外,如果你的程序需要频繁进行文件操作,可能需要创建更高级的抽象,例如封装成自定义类或模块,以提高代码的可复用性和可维护性。同时,考虑到文件操作可能涉及到并发问题,如果是在多线程环境下,还需要注意同步...

    VC之PDF文件操作

    在VC++环境中进行PDF文件操作是一项常见的任务,尤其在开发桌面应用程序时,可能需要读取、编辑或生成PDF文档。本篇文章将详细讲解如何在VC++中实现这些功能,主要涉及的技术点包括PDF文件的基本概念、PDF库的使用...

    21个VC文件操作实例源码

    如何使用Shell操作文件 如何逐行读取文本文件 如何查找文件 如何创建临时文件 如何创建目录 如何复制文件 如何获得INI文件的全部段名 如何获得Windows目录和System目录 如何获得或设置文件的属性 如何获得...

    C#编程 文件操作 ClearRecycle(源码)(源码)

    C#编程 文件操作 ClearRecycle(源码)(源码)C#编程 文件操作 ClearRecycle(源码)(源码)C#编程 文件操作 ClearRecycle(源码)(源码)C#编程 文件操作 ClearRecycle(源码)(源码)C#编程 文件操作 ClearRecycle(源码)(源码)...

    C#编程 文件操作 MultiFormatTxt(源码)(源码)

    C#编程 文件操作 MultiFormatTxt(源码)(源码)C#编程 文件操作 MultiFormatTxt(源码)(源码)C#编程 文件操作 MultiFormatTxt(源码)(源码)C#编程 文件操作 MultiFormatTxt(源码)(源码)C#编程 文件操作 MultiFormatTxt...

    C#编程 文件操作 ReadFileByLine(源码)(源码)

    C#编程 文件操作 ReadFileByLine(源码)(源码)C#编程 文件操作 ReadFileByLine(源码)(源码)C#编程 文件操作 ReadFileByLine(源码)(源码)C#编程 文件操作 ReadFileByLine(源码)(源码)C#编程 文件操作 ReadFileByLine...

    C#编程 文件操作 ManageFileByType(源码)(源码)

    C#编程 文件操作 ManageFileByType(源码)(源码)C#编程 文件操作 ManageFileByType(源码)(源码)C#编程 文件操作 ManageFileByType(源码)(源码)C#编程 文件操作 ManageFileByType(源码)(源码)C#编程 文件操作 ...

    C#编程 文件操作 CamouflageFolder(源码)(源码)

    C#编程 文件操作 CamouflageFolder(源码)(源码)C#编程 文件操作 CamouflageFolder(源码)(源码)C#编程 文件操作 CamouflageFolder(源码)(源码)C#编程 文件操作 CamouflageFolder(源码)(源码)C#编程 文件操作 ...

    C#编程 文件操作 FileBatchChangeName(源码)(源码)

    C#编程 文件操作 FileBatchChangeName(源码)(源码)C#编程 文件操作 FileBatchChangeName(源码)(源码)C#编程 文件操作 FileBatchChangeName(源码)(源码)C#编程 文件操作 FileBatchChangeName(源码)(源码)C#编程 文件...

    C#编程 文件操作 CreateFile(源码)(源码)

    C#编程 文件操作 CreateFile(源码)(源码)C#编程 文件操作 CreateFile(源码)(源码)C#编程 文件操作 CreateFile(源码)(源码)C#编程 文件操作 CreateFile(源码)(源码)C#编程 文件操作 CreateFile(源码)(源码)C#编程 ...

Global site tag (gtag.js) - Google Analytics