2017-08-23 3 views
-1

Ich versuche, eine Datei Zeile für Zeile zu lesen, und jede Zeile durch meinen Code-Zyklus ausführen, das alles funktioniert schon gut, aber ich frage mich, wie ich dies richtig multithread mit pthreads .... Ich habe bereits Pthreads installiert, ich muss nur ein Beispiel sehen, wie man eine Datei Zeile für Zeile lesen, und führen Sie meinen Code-Zyklus für jede Zeile, ohne die gleiche Zeile zweimal wegen Multithreading. ..php Pthreads eine Datei Zeile für Zeile lesen

Ist das möglich, oder verschwende ich meine Zeit? Diese Dateien Ich bin mit dem PHP-Skript auf sind groß, und kann mehr als 150.000 Zeilen sein ....

$file = file('list.txt'); 
//For each file as "kek"/ 
ForEach ($file as $kek){ 
//Split the new line. 
    $splitter = explode(":", $kek); 
    $var1 = $splitter[0]; 
    $var2 = $splitter[1]; 
    $var3 = $splitter[2]; 
    $var4 = $splitter[3]; 

    //execute the rest of the code that you need the separated vars for.... 
} 

edit: Also, ich habe ein wenig Lektüre getan, und ich glaube, was Ich brauche einen Pool .... Ich habe derzeit PHP 5.5 installiert, und Pthreads V2, ist ein Pool, was ich brauche?

+1

Sie könnten jedem Thread einen Zeilenblock zuordnen, vorausgesetzt, dass die Reihenfolge nicht wichtig ist. Also Thread 1 tut 1-1000, 2 tut 1001 bis 2000 ... –

+0

@MousaAlfhaily Ich habe den Beispielcode für das, was ich Multithread benötigen, hinzugefügt. – JesterRM

+0

@NigelRen Die Dateigröße wird sehr unterschiedlich sein, da die Datei, die ich sortiere, jedes Mal anders sein wird, wenn die Datei läuft, würde das noch funktionieren, und könnte ich eine Art Beispiel oder einen Link zu einem bekommen Beispiel? – JesterRM

Antwort

-1

Sie können Befehl Split in Linux verwenden, kann es geteilt werden Sie Datei txt werden 2 Dateien oder mehr, was Sie wollen.

können Sie versuchen Befehl

Split -l 500 datei.txt -> für 500 Zeilen jede Datei aufgeteilt Split C 10M datei.txt -> 10 MB Größe der einzelnen Dateien aufgeteilt