问题标签 [splfileobject]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
php - 使用 SplFileObject 对单个文件进行 1000 次写入(附加)
“receiver.php”文件每秒接收 ±1000 个 Ajax 发布请求,$array
其中包含使用以下代码写入file.csv的数据:
问题:
每个请求数据是否会正确附加到 file.csv?或者如果某些请求在写入时刻同时发生,那么这些请求数据会因为“文件锁定”而丢失?
如果每秒 1000 个请求同时写入 file.csv 会发生什么 - 由 cron 服务启动的其他进程将介入并开始读取该file.csv?这 1000 个请求是否能够继续将数据附加到file.csv或在 cron 进程将与file.csv一起工作的时候- 这 1000 个请求将“撞墙”并且数据不会被插入、丢失?
总的来说-我只是对在这种情况下是否会丢失数据感兴趣?
php - 在 5GB+ 文件中搜索文本,然后获取整行
我想在大小为 5GB+ 的 TXT 文件中搜索文本Hello
(示例),然后返回整行。
我尝试过使用SplFileObject
,但我知道使用行号是必需的SplFileObject
,如下所示:
但如前所述,我想搜索一个字符串然后获取整行,我不知道行号。
任何帮助,将不胜感激。
php - RuntimeException SplFileInfo::getSize(): stat failed for... Laravel 6 上传图片
我使用 laravel 6(上次更新),我创建了一个可以上传图片的表单。我在 Windows 操作系统上,我使用 PHPStorm、laravel 和 xampp 应用程序。我所有的配置都设置正确,没有运行问题。
我的问题是,当我从表单提交到达字段时出现此错误:
RuntimeException SplFileInfo::getSize(): stat failed for C:\xampp\tmp\phpA5C6.tmp \
这是我的表单 create.blade.php 中的代码:
这是我的控制器的代码:
上传的文件代码完美运行,我在我想要的选定文件夹中注册文件。我的路线没有问题(无需显示这部分代码)。并且数据库没有计算来自创建帖子的记录。
当我提交表单时,我有这个错误:
RuntimeException SplFileInfo::getSize(): stat failed for C:\xampp\tmp\phpA5C6.tmp
我已经检查了upload_max_filesize
inphp.ini
和UploadedFile.php
inlaravel/vendor
并且它们具有相同的值。
如果您有任何想法...谢谢。
php - PHP - SplFileObject 在第一行写入 CSV
如何将以下 CSV 格式的数组写入文件的特定行。我正在使用 PHP LimitIterator来检索我的文件的一部分。
有谁知道任何方法?我真的被困住了:O
php - PHP在使用延迟加载时读取文本文件中的下一行?
我有一个文本文件,我想逐行阅读。对于每一行,我还需要下一行的值,所以我需要在当前行中读取下一行的内容。
我在这里阅读了很多答案,我可以通过foreach
循环来做到这一点,但它需要提前阅读整个文件。我正在寻找一些只能根据需要阅读的东西。
这是我到目前为止使用 SplFileObject 得到的结果。
假设我有一个包含这样行的文本
我希望他们像这样打印出来
但是我的代码每隔一行都跳过
我的猜测是我的 while 循环和$file->next()
每个循环将行移动 1,这就是跳过的原因。但是没有next()
调用,我不知道如何获取下一行的值。我该如何解决?
php - 如何将 SplFileObject::fpassthru 输出分配给变量
我目前正在将一些数据写入SplFileObject
这样的:
现在,我想将整个输出(字符串)转储到一个变量中。
我知道SplFileObject::fgets
逐行获取输出(这需要一个循环),但我想一口气得到它,理想情况下是这样的:
但是,这不起作用,因为它只是打印到标准输出。
对于我想要实现的目标,有一个解决方案stream_get_contents()
:
但是,该方法要求您可以直接访问文件句柄。
SplFileObject
将文件句柄隐藏在私有属性中,因此无法访问。
还有什么我可以尝试的吗?
php - PHP群在ubuntu中没有任何影响
我有一个php进程用flock锁定一个文件。然后我启动另一个删除文件的进程。
在 Windows 上,我得到了无法删除锁定文件的正确行为,但是在 ubuntu(wsl 和完整的 Ubuntu 安装)上,我总是能够删除该文件。
我读过其他类似的问题,但他们似乎都测试错了。我很确定我正在正确地测试它。
更新:更彻底的测试。 阅读后为什么在打开的文件上取消链接成功?和文件系统中的删除队列我还需要测试读写。
测试方法。
- 打开终端并运行我的测试文件:
php test/flock_file_locking_with_splfileobject.php
锁定文件并等待 30 秒
- 打开第二个终端并运行以下命令:
以下是内容test/flock_file_locking_with_splfileobject.php
请参阅描述我得到的输出的代码中的注释。
Windows 运行正常,但在 Linux 上,我的第二个进程可以对文件执行任何它喜欢的操作,而第一个进程显然获得了成功的文件锁定。
显然,如果它只适用于 Windows,就不能相信羊群生产。有没有办法真正获得独占文件锁?
有任何想法吗?