php读取大文件的一点疑问
我要分析一个6G的log文件,比对每行文件是否符合我的要求,程序如下
$file_path = 'd:\work\workplace\test\file\system.log';$file = fopen($file_path, 'r');$key = md5(0);$i = 1;while (!feof($file)) { $buff = fgets($file); if ($buff == $key . "\r\n") { echo "find 0 at Line {$i}\r\n"; } $i ++;}fclose($file);
我想问下这样性能怎么样吗,不会出现内存泄露或其他问题吧,还有进一步优化的方法吗?
回复讨论(解决方案)
你需要先将这个文件分割成若干个小文件
然后循环读取每个小文件即可!
linux 下 $ split -b
分割···
linux 下 $ split -b
分割···
为什么要分割啊,用fgets不是每次只去一行,并没有把文件都读取进内存啊
我建议你用fgets时最好制定读取的字符数,不要一行一行的读,6G的文件说不定某一行会很长!
现在可以肯定每一行不会很长,应为日志是按规定格式存取的
哦,那你看着办吧!呵呵,我只是建议!
哦,那你看着办吧!呵呵,我只是建议!
我的确也看到有的人像你那样做,但是如果不是一下子读入内存,应该不比那样吧,切割文件和删除临时文件还有消耗,这是我个人感觉,有不对的情指出
6G的文本文件……
你咋能整这么大的文件?
日志应该按天或者按周、按月来记,超过一定大小就新建一个文件
应该分成多个文件
6G的文本文件……
你咋能整这么大的文件?
日志应该按天或者按周、按月来记,超过一定大小就新建一个文件
应该分成多个文件
我们公司的行为日志,一天6G
可以,没有问题。就是很费时间
仅就代码而言,可以缩减一点
$file_path = 'd:\work\workplace\test\file\system.log';
$file = fopen($file_path, 'r');
$key = md5(0);
$i = 1;
while ($buff = fgets($file)) {
if ($buff == $key . "\r\n")
{
echo "find 0 at Line {$i}\r\n";
}
$i ++;
}
fclose($file);
如果一次读取的多一点(比如1M)可能要快一点。不过算法要复杂些
做这种东西,不是php的长项
要不搞WEB的话,还是换其它程序搞吧。
引用 9 楼 baiyuxiong 的回复:
6G的文本文件……
你咋能整这么大的文件?
日志应该按天或者按周、按月来记,超过一定大小就新建一个文件
应该分成多个文件
我们公司的行为日志,一天6G
如果用shell怎么写啊,求达人,没有也很感谢大家
后来呢?怎么解决了嘛??
我用的fgets读的文件,也不算大吧,150M的一个csv文件,18秒钟,用fgets按行读的话(已知不会出现很长的行),需不需要再用fseek来设定文件指针?可以提高效率吗?

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen



Laravel vereinfacht die Behandlung von temporären Sitzungsdaten mithilfe seiner intuitiven Flash -Methoden. Dies ist perfekt zum Anzeigen von kurzen Nachrichten, Warnungen oder Benachrichtigungen in Ihrer Anwendung. Die Daten bestehen nur für die nachfolgende Anfrage standardmäßig: $ Anfrage-

Die PHP Client -URL -Erweiterung (CURL) ist ein leistungsstarkes Tool für Entwickler, das eine nahtlose Interaktion mit Remote -Servern und REST -APIs ermöglicht. Durch die Nutzung von Libcurl, einer angesehenen Bibliothek mit Multi-Protokoll-Dateien, erleichtert PHP Curl effiziente Execu

Alipay PHP ...

Laravel bietet eine kurze HTTP -Antwortsimulationssyntax und vereinfache HTTP -Interaktionstests. Dieser Ansatz reduziert die Code -Redundanz erheblich, während Ihre Testsimulation intuitiver wird. Die grundlegende Implementierung bietet eine Vielzahl von Verknüpfungen zum Antworttyp: Verwenden Sie Illuminate \ Support \ facades \ http; Http :: fake ([ 'Google.com' => 'Hallo Welt',, 'github.com' => ['foo' => 'bar'], 'Forge.laravel.com' =>

Möchten Sie den dringlichsten Problemen Ihrer Kunden in Echtzeit und Sofortlösungen anbieten? Mit Live-Chat können Sie Echtzeitgespräche mit Kunden führen und ihre Probleme sofort lösen. Sie ermöglichen es Ihnen, Ihrem Brauch einen schnelleren Service zu bieten

In Artikel wird die in PHP 5.3 eingeführte LSB -Bindung (LSB) erörtert, die die Laufzeitauflösung der statischen Methode ermöglicht, um eine flexiblere Vererbung zu erfordern. Die praktischen Anwendungen und potenziellen Perfo von LSB

JWT ist ein offener Standard, der auf JSON basiert und zur sicheren Übertragung von Informationen zwischen Parteien verwendet wird, hauptsächlich für die Identitätsauthentifizierung und den Informationsaustausch. 1. JWT besteht aus drei Teilen: Header, Nutzlast und Signatur. 2. Das Arbeitsprinzip von JWT enthält drei Schritte: Generierung von JWT, Überprüfung von JWT und Parsingnayload. 3. Bei Verwendung von JWT zur Authentifizierung in PHP kann JWT generiert und überprüft werden, und die Funktionen und Berechtigungsinformationen der Benutzer können in die erweiterte Verwendung aufgenommen werden. 4. Häufige Fehler sind Signaturüberprüfungsfehler, Token -Ablauf und übergroße Nutzlast. Zu Debugging -Fähigkeiten gehört die Verwendung von Debugging -Tools und Protokollierung. 5. Leistungsoptimierung und Best Practices umfassen die Verwendung geeigneter Signaturalgorithmen, das Einstellen von Gültigkeitsperioden angemessen.

In Artikel werden wichtige Sicherheitsfunktionen in Frameworks erörtert, um vor Schwachstellen zu schützen, einschließlich Eingabevalidierung, Authentifizierung und regelmäßigen Aktualisierungen.
