我将在编辑中发布我的代码...我很难用包含的代码提交问题. 我维护了一个聊天程序,该程序已被分配给它.我的工作始于主题,以使其与我们网站的其余部分相匹配.现在,管理层要求我脑海中提供其他功能.这样的功能之一就是客户选择将聊天日志的副本保存到他们的计算机上. 整个聊天对话存储在一个称为chathistoryhtml的JavaScript变量中,并且循环在页面上的聊天会话每5秒都会通过向ChathistoryHtml变量添加新的文本行,并在"历史记录" div中显示一次,以更新一次.客户看到的. 现在,我了解如何打开一个新窗口以显示仅聊天历史记录,而没有徽标,背景或文本输入框.但是,我无法使用我的方法将PHP命令传递到该新页面. 理想情况下,我想要一个解决方案,该解决方案可以允许用户单击一个按钮,并出现一个保存对话框,只能保存聊天对话,而无需打开新窗口.我现在正在打开一个新窗口,因为我试图避免在页面上保存所有其他内容. 我愿意接受建议.我知道一点JavaScri
以下是关于 file-io 的编程技术问答
我正在尝试使用PHP从文本文件中读写.使用HTML页面上的按钮读取文件.该文件是使用HTML页面上的按钮编写的,该页面从文本框中获取参数.当文本文件位于WebRoot目录中时,我成功地写入了文本文件.我希望能够从居住在Webroot目录之外的文本文件中读/写. 我正在使用Beaglebone上的PHP使用LightTPD. Webroot目录位于/var/www.我要编辑的文本文件将位于/var/textFiles.我到处环顾四周寻找解决方案,但似乎没有用. 以下是我发现的最有前途的解决方案,但似乎不起作用.当我单击"读取"或"写"按钮时,页面似乎被卡在无限循环中.我想知道是否有人知道为什么这不起作用,或者他们是否可以提供更好的解决方案. 这是我到目前为止所拥有的: index.php
我正在重写一个在本地服务器上处理和排序的函数,该函数可以在通过SSH连接到达的远程服务器上执行此操作. 现有系统使用PECL SSH2库来获取特定文件,例如: if ($stream = @fopen("ssh2.sftp://$sftp/$filename", "r")) { //do stuff... } ,但我还不知道文件名.我使用 在本地工作 $file_path = ABSOLUTE_PATH . UPLOAD_URL . $importfolder . '/'; $file = '*.xml'; $files = glob($file_path.$file); 我无法通过ssh服务器工作glob() $files = glob("ssh2.sftp://$sftp/*.xml"); (尽管目录中有许多XML文件(SFTP连接是单个目录),但始终返回空白. 我该如何实现这一目标?我可以在此处使用诸如glog()之类的函数吗? 解决
我有一个大文件,我想修改其中的每一行. 我想使用PHP快速进行: 我的文件是CSV文件; 20010103,02,00,00,0.9496 20010103,03,00,00,0.9504 20010103,04,00,00,0.9499 我想这样做,以便能够将其与HighChart一起使用: [Date.UTC(2001,01,03,02,00,00),0.9496], [Date.UTC(2001,01,03,03,00,00),0.9504], [Date.UTC(2001,01,03,04,00,00),0.9499], cani如何循环每行并进行此修改? 解决方案 请参阅fgetcsv和fputcsv PHP功能.基本上将是: if (($handle1 = fopen("input.csv", "r")) !== FALSE) { if (($handle2 = fopen("output.csv", "w")) !== FAL
我有一个文本文件,其值由逗号分隔. 示例: 1299491735618,10,84,10,121.6,10,120.0,12994917389996,12, 13, 14, 15, and so on .. 现在,我只需要阅读最后一个"集合"数据,即仅从12994917389996,12, 13, 14, 15, and so on ... 中 在这种情况下,我猜12994917389996大于130,其他值小于130.因此,我需要从12994917389996读取到文件的末尾... 希望你得到它! 编辑1:不,这是一个动态的文本文件,它不断更新,我每次都需要阅读最后一组数据! 编辑2:我的代码
我有这个文件结构: line1 (number or a a short string) line2 (can be several MB of text) ; line1 line2 ; line1 line2 ; ... 总文件大小超过100MB,因此每次逐行读取IT速度相当慢. 我只想阅读每个块的" line1",然后跳过所有" line2".或者只是读一条我知道亚麻的线.有什么办法可以使用PHP做到这一点?读取线的标准方法使线路进入内存,并且在此结构中不太有效. (我知道数据库结构会更好地使用,但这是我真正想要解决方案的研究案例.) 解决方案 使用splfileObject 无需阅读所有第1行x 可以"跳"到所需的线 如果您知道行号: //lets say you need line 4 $myLine = 4 ; $file = new SplFileObject('bigFile.txt'); //this is zero b
我有一组我要连接的文件(每个文件都代表多部分下载的零件). 每个分裂的文件的大小约为250mib,我有一个可变的数字. 我的串联逻辑是直接的: if (is_resource($handle = fopen($output, 'xb')) === true) { foreach ($parts as $part) { if (is_resource($part = fopen($part, 'rb')) === true) { while (feof($part) !== true) { fwrite($handle, fread($part, 4096)); } fclose($part); } } fclose($handle); } 我花了一段时间来追
我正在尝试找到阅读php://输入的替代方案.我将其用于从卷发中获取XML数据. 我通常会以: 进行此操作 $xml = file_get_contents('php://input'); 但是,我在Windows上遇到了一些问题. 是否有替代方案,也许使用fopen()或fread()? 解决方案 是的,您可以做: $f = fopen('php://input', 'r'); if (!$f) die("Couldn't open input stream\n"); $data = ''; while ($buffer = fread($f, 8192)) $data .= $buffer; fclose($f); 但是,您必须问自己的问题是,为什么file_get_contents在Windows上工作?因为如果它不起作用,我怀疑fopen是否适用于同一流... 其他解决方案 好的.我想我找到了一个解决方案. $f = @fo
在阅读 php fopen的文档: 对于可移植性,强烈建议您在用 什么是b标志,它做什么? 为什么强烈推荐? 解决方案 'b'旗力二进制模式. 如果要处理二进制文件,即使用" B"标志.图像. 注意: 当您编写文本文件并想插入换行符时,您需要为操作系统使用正确的线路结束字符. 基于UNIX的系统使用\n作为线路结束字符,基于Windows的系统使用\r\n作为线结束字符,基于Macintosh的系统使用\r用作行结束字符. Windows提供了一个文本模式转换标志('t'),该标志将在使用文件时透明地将\n转换为\r\n. 相比之下,您也可以使用'b'强制二进制模式,这不会翻译您的数据. 您可以通过在mode参数中使用" b"标志来避免翻译.示例用法: $handle_read = fopen($filepath, 'rb'); $handle_write = fopen("/home/user/file.gif",
我使用file_get_contents从磁盘上加载XML文件,作为测试,我发现可以在3.99秒内使用file_get_contents() 1,000次加载156K文件.我已经将完成加载的部分分组并用memcache层代替,在我的开发机上找到我可以在4.54秒内完成同一文档的1000个负载. 我很欣赏file_get_contents()会进行一些缓存,但看起来它实际上比著名的缓存技术更快.在单个服务器上,file_get_contents()的性能是否尽可能好? 我在PHP 5.2.17上通过Macports,OS X 10.6.8. 编辑:我在此大小的XML文档上找到了,使用MEMCACHE_COMPRESSED标志有很小的好处.通过memcache进行的1,500个负载是在6.44秒(带有压缩)而不是6.74(无)的.但是,两者都比file_get_contents慢,file_get_contents在5.71秒内执行相同数量的负载 解决方案 因为fi
我已经看过fopen之前使用@的代码样本,如 $fh = @fopen($myFile, 'w'); 此@? 的意义是什么 解决方案 它抑制了表达式可能显示的错误. 您可以阅读更多有关它的信息在这里.. 示例: file_get_contents('file_does_not_exist'); //this shows an error @file_get_contents('file_does_not_exist'); //this does not 其他解决方案 其PHP的错误控制字符. PHP支持一个错误控制操作员:AT符号(@).当将其添加到PHP中的表达式中时,该表达式可能生成的任何错误消息都将被 忽略 . 更多在这里.. 其他解决方案 使用@始终是不良练习.如果出现,它将抑制错误消息,而错误消息对程序员非常有用,并且抑制它是自杀. PHP的命运主要不是由程序员使用,而是由没有任何线索的休闲用户使用.您已经从后一种代
我正在尝试通过readfile()发送一个大文件. 但是,没有发送到浏览器,readfile()返回0(不是 false!). 我要发送的文件是大小的4GIB,可通过php读取. 我正在设置set_time_limit(0)允许冗长的下载过程. 我试图以4K块和echo的fread()在loop的限制中发送该文件,但是下载了500-2500 MIB后,随机中止(无错误),并且从未设法完成下载. 以下测试代码 $f = '/var/www/tmp/largefile.dat'; var_dump(file_exists($f)); var_dump(is_readable($f)); var_dump(filesize($f)); $rf = readfile($f); var_dump($rf); 产生以下输出: bool(true)bool(true)int(4294967296)int(0) 使用以下命令创建了测试文件: dd
我希望这些变量充满它们的值,但是在config.php文件中,写入变量名称本身,我希望$ host convert to config.php文件中的单个引号转换为'localhost'. $handle = fopen('../config.php', 'w'); fwrite($handle, ' '); fclose($handle); 解决方案 如果您在单引号中使用变量,它们将被表示为字符串而不是变量. 您也可以这样做: // Get from $_SESSION (if started) $host = $_SESSION['host']; $user = $_SESSION['user']; $pass = $_SESSION['pass']; $handle = f
我希望在PHP中构建目录浏览器.我刚刚启动了我的代码,但需要有人帮助我完成或修改它. $dir = dirname(__FILE__); //path of the directory to read $iterator = new RecursiveDirectoryIterator($dir); foreach (new RecursiveIteratorIterator($iterator, RecursiveIteratorIterator::CHILD_FIRST) as $file) { if (!$file->isFile()) { echo "" . $file->getPath() . "\"; } } 解决方案 在您开发此过程时,重要的是要认识到您正在处理两个不同的目录路径.一个路径是基于URL的,另一个是基于文档的.路径/将带您进入网站的根源,其中c:\某些路径\ www \也
我想在PHP中使用" Include"关键字来从文件夹中随机选择文件并输出内容.我该怎么做? 谢谢. 解决方案 假设您知道文件在哪里,文件是PHP文件: $phpFiles = glob('/path/to/files/*.php'); if (empty($phpFiles) === false) { $randomFile = $phpFiles[array_rand($phpFiles)]; include($randomFile); } 其他解决方案 glob() 会将文件名读为阵列. 然后您可以洗牌这个数组并选择一个随机的物品. 其他解决方案 使用 glob 获取一系列文件.洗牌阵列. array_shift 阵列的第一个文件.包括它.
我正在尝试打开一个文件以在PHP脚本中阅读,但遇到麻烦. 这是我的代码 $fileHandle = fopen("1234_main.csv", "r")or die("Unable to open"); if (!file_exists($fileHandle)) { echo "Cannot find file."; } 脚本与我要读取的文件处于同一目录中,并且没有其他读/写许可错误,因为我可以在同一目录中创建/读取其他文件. 运行脚本时,我只会得到"找不到文件"错误消息.为什么显示此错误消息?当然,如果Fopen()无法打开文件"或DIE语句"应该结束脚本? 另外,为什么当文件绝对存在并且与脚本相同的位置时,我为什么不能打开该文件(我也尝试使用文件名的完整路径而不仅仅是文件名). 我是PHP的新手(但在C ++中有EXP),所以如果这是一个愚蠢的问题,我深表歉意. 非常感谢 解决方案 file_exists()以文件名作为输入