php-resource



Zurück   PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr > Entwicklung > PHP Developer Forum
 

Login

 
eingeloggt bleiben
star Jetzt registrieren   star Passwort vergessen
 

 

 


PHP Developer Forum Hier habt ihr die Möglichkeit, eure Skriptprobleme mit anderen Anwendern zu diskutieren. Seid so fair und beantwortet auch Fragen von anderen Anwendern. Dieses Forum ist sowohl für ANFÄNGER als auch für PHP-Profis! Fragen zu Laravel, YII oder anderen PHP-Frameworks.

Antwort
 
LinkBack Themen-Optionen Thema bewerten
  #1 (permalink)  
Alt 22-11-2018, 22:27
wampisgood
 Registrierter Benutzer
Links : Onlinestatus : wampisgood ist offline
Registriert seit: Oct 2017
Beiträge: 13
wampisgood befindet sich auf einem aufstrebenden Ast
Standard Problem, große Dateien bearbeiten über 4gb, kein mysql

Hallo liebe Softwareentwickler
ich habe ein Problem :/
Das Problem ist, wie kann man mit nur 256mb server ram eine große Datei die weit über 4gb oder 8gb groß ist, bearbeiten?


Also z.b eine bestimmte Zeile. Beispiel: Zeile 7.789 bearbeiten ....



Mit file array ( array file ( string $filename [, int $flags = 0 [, resource $context ]] ) führt das ja zu einem Verarbeitungs Abbruch des Servers?


Wie könnte man das realisieren?


Mit einem Dateizeiger und fgets in der while schleife ließt man realtiv schnell eine bestimmte Zeile Habe mir mal dann den ram Verbrauch angeschaut mit memory_get_usage....
ca. 0.6kb ram bei einer 4gb großen datei.

Ich selber programmiere sehr gerne mit PHP und seit Jahren, bloss so einen Fall hatte ich noch nicht.


Ich bedanke mich
Mit Zitat antworten
  #2 (permalink)  
Alt 22-11-2018, 22:49
h3ll
 Registrierter Benutzer
Links : Onlinestatus : h3ll ist offline
Registriert seit: Mar 2008
Beiträge: 3.604
h3ll befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von wampisgood Beitrag anzeigen
Mit einem Dateizeiger und fgets in der while schleife ließt man realtiv schnell eine bestimmte Zeile
Dann brauchst du ja nur noch fwrite(), um den veränderten Inhalt zu schreiben.
Mit Zitat antworten
  #3 (permalink)  
Alt 22-11-2018, 22:54
wampisgood
 Registrierter Benutzer
Links : Onlinestatus : wampisgood ist offline
Registriert seit: Oct 2017
Beiträge: 13
wampisgood befindet sich auf einem aufstrebenden Ast
Standard

ehrlich? ohh


Kannst du mir ein Beispiel geben das wäre sehr nett


Hier mein code um eine bestimmte Zeile auszulesen:


public function get_content_by_line($file, $pos)
{
$line = "";
$buffer_line = "";

$handle = fopen($file, "r");
if ($handle)
{
while (($line = fgets($handle)) !== false)
{
$i++;
if( $pos === $i )
{
$buffer_line = $line;
break;
}
}
fclose($handle);
}
else {}

return $buffer_line;
}
Mit Zitat antworten
  #4 (permalink)  
Alt 22-11-2018, 23:16
wampisgood
 Registrierter Benutzer
Links : Onlinestatus : wampisgood ist offline
Registriert seit: Oct 2017
Beiträge: 13
wampisgood befindet sich auf einem aufstrebenden Ast
Standard

wahrscheinlich eine kombi mit fseek(...) und fwrite(...) oder?
Also muss ich im offset bereich springen ...
Aber eine Frage habe ich noch .... Kann man mit fseek auch eine bestimmte Zeile anspringen?


Wer Rechtsschreibfehler oder Grammatikfehler findet darf Sie behalten
Mit Zitat antworten
  #5 (permalink)  
Alt 22-11-2018, 23:26
wampisgood
 Registrierter Benutzer
Links : Onlinestatus : wampisgood ist offline
Registriert seit: Oct 2017
Beiträge: 13
wampisgood befindet sich auf einem aufstrebenden Ast
Standard

Ich habe greade selber mit php und mit nem hexeditor festgestellt
das fseek immer nur bis zur Escape Sequenz '\n' (0x0A) ließt. Weiß nicht ob unter Windows mit '\r\n' auch bei '\r' schon stoppt. Bin Linux Fan und habe mich von Windows vor Monaten verabschiedet . Aber ich prüfe es mal trotzdem gleich
Mit Zitat antworten
  #6 (permalink)  
Alt 23-11-2018, 00:43
wampisgood
 Registrierter Benutzer
Links : Onlinestatus : wampisgood ist offline
Registriert seit: Oct 2017
Beiträge: 13
wampisgood befindet sich auf einem aufstrebenden Ast
Standard

Ich habe es schon fast selber hingekriegt mit dateizeiger, fgets und fwrite ich muss noch ermitteln mit strlen wie groß jeweils die zeile in der datei ist, dann alle so löschen Ich habe es fast kapiert mit dem offset Bereich
Trotzdem bedanke ich mich für die hilfe von euch. Super. Danke nochmals.
Ich wünsche euch eine erholsame und Gute Nacht
Mit Zitat antworten
  #7 (permalink)  
Alt 23-11-2018, 13:09
wampisgood
 Registrierter Benutzer
Links : Onlinestatus : wampisgood ist offline
Registriert seit: Oct 2017
Beiträge: 13
wampisgood befindet sich auf einem aufstrebenden Ast
Standard

Leider habe ich wieder ein problem :/ was leider aktuell ich nicht schaffe es zu lösen.
z.b habe ich eine Textdatei mit folgendem Inhalt:


1. oder 2. ist nur eine zeile ab dem 'h' beginnt das Zeichen



1.hallo1
2.hallo2
3.hallo3
4.hallo4
5.hallo5




Zeile 3 mit 'hallo3' belegt ja 6 bytes. Jetzt habe ich das problem das ich mit fgets und fwrite und dem Dateizeiger ja die 3 Zeile überschreiben kann, aber wenn ich z.b mehr wie 6 bytes habe z.b 200 bytes, dann zerstöre ich ja die anderen Informations Strukturen :/


Mir geht es darum sehr große Dateien sehr schnell zu schreiben ...
bei 4gb oder 8gb oder sogar 12gb alles in einem Array reinzuladen bringt ja nichts. Ich stehe wieder auf dem Schlauch. klar ich könnte auch, wenn ich weniger als 6 bytes haben z.b das den string hat "ist", bloss dann würde ja das so stehen =>"istlo3" ... man könnte ja eine Art Abbruchs tag einfügen z.b so "ist<~>". Das könnte man noch lösen aber wie löse ich das wenn ich mehr Zeichen habe als in der Zeile an sich (offset) ? Sollte ich einen Denkfehler haben, bitte sagt mir das Danke. Nochmals Vielen lieben Dank das ihr so nett seit und hilft, ich schätze das selber sehr.


Sorry wegen Grammatik und Rechtsschreibfehler... (ist nicht extra, ich habe leider eine schwäche)
Mit Zitat antworten
  #8 (permalink)  
Alt 23-11-2018, 13:12
wampisgood
 Registrierter Benutzer
Links : Onlinestatus : wampisgood ist offline
Registriert seit: Oct 2017
Beiträge: 13
wampisgood befindet sich auf einem aufstrebenden Ast
Standard

hallo h3ll danke nochmal, für deine hilfe von gestern ich glaube ich habe hier im thread etwas falsch geschrieben :/ ich bin immer bis nach unten gegangen (gescroolt) und dann hier auf Antworten gegangen. Aktuell habe ich wieder ein Problem :/ wo ich auf dem Schlauch stehe. Könntest du dir etwas Zeit nehmen, wenn es dir keine Umstände macht? Ich bitte dich wirklich (Aber nur, wenn du kannst, Zeit und Laune dafür hast). Danke, den letzten Eintrag von mir lesen ...
Mit Zitat antworten
  #9 (permalink)  
Alt 23-11-2018, 13:20
h3ll
 Registrierter Benutzer
Links : Onlinestatus : h3ll ist offline
Registriert seit: Mar 2008
Beiträge: 3.604
h3ll befindet sich auf einem aufstrebenden Ast
Standard

Ich weiß nicht, ob es vom OS Dateioperationen gibt, um Inhalte zu "verschieben". In der PHP-Doku habe ich dazu jedenfalls nichts gefunden. Es bleibt wohl nichts anderes übrig als die Datei bis zum Ende neu zu schreiben.
Mit Zitat antworten
  #10 (permalink)  
Alt 23-11-2018, 13:24
wampisgood
 Registrierter Benutzer
Links : Onlinestatus : wampisgood ist offline
Registriert seit: Oct 2017
Beiträge: 13
wampisgood befindet sich auf einem aufstrebenden Ast
Standard

hallo danke für deine Antwort. Schade... Oder man löst das so, man sagt, man reseviert für jede Zeile z.b 100kb und mit dem Abbruchstag z.b so <~> könnte man immer das ganze so umgehen
Aktuell fällt mir was anderes nichts ein ...

Ich programmiere selber mit über 9 Programmiersprachen und das schon ziemlich lange, bloss so ein Problem hatte ich persönlich selber noch nicht.

Ok danke schonmal Danke danke
Mit Zitat antworten
  #11 (permalink)  
Alt 23-11-2018, 13:32
wampisgood
 Registrierter Benutzer
Links : Onlinestatus : wampisgood ist offline
Registriert seit: Oct 2017
Beiträge: 13
wampisgood befindet sich auf einem aufstrebenden Ast
Standard

Komischerweise meint jemand hier aus diesem Thread, das es nicht möglich sei einfach in die Datei Position zu springen und zu überschreiben.

hier:

Ja aber das stimmt ja so auch wieder nicht, mit fgets und fwrite und Dateizeiger geht es ja


In einem englischen/amerikanischen Forum meinte ein Softwareentwickler man solle blockweise einlesen und schreiben, temporär, mit split_str oder wie die funktion heißt ...


Ich teste mal bisschen aber vielleicht hat hier jemand noch eine intelligente lösung.
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
kein bearbeiten möglich sandra_weber PHP Developer Forum 4 13-02-2006 08:14
Sehr große Bilder bearbeiten / suche workaround für: tried to allocate 12288 bytes eccc_-phpresour PHP Developer Forum 8 03-08-2005 20:51
[Script] große Produktlistung für Anfrage über Mail ,aber kein Shop swadi Projekthilfe 13 01-02-2005 16:50
große Dateien bearbeiten teresiak PHP Developer Forum 9 13-10-2003 13:32

Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an


PHP News

Die RIGID-FLEX-Technologie
Die RIGID-FLEX-TechnologieDie sogenannte "Flexible Elektronik" , oftmals auch als "Flexible Schaltungen" bezeichnet, ist eine zeitgemäße Technologie zum Montieren von elektronischen Schaltungen.

06.12.2018 | Berni

ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlicht
ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlichtDie bekannte Marktplatzsoftware ebiz-trader ist in der Version 7.5.0 veröffentlicht worden.

28.05.2018 | Berni


 

Aktuelle PHP Scripte

HeidiSQL - kostenloses MySQL front-end Editor für Windows ansehen HeidiSQL - kostenloses MySQL front-end Editor für Windows

HeidiSQL - ist ein Windows-Editor für die bekannt open Source Datenbank mySQL

10.12.2018 Berni | Kategorie: MYSQL/ Management
piwik Open-Source Webanalyse-Software ansehen piwik Open-Source Webanalyse-Software

piwik ist eine gute Alternative zu Google Analytics. Viele Features und ein modernes Erscheinungsbild mit aussagefähigen Statistiken in Echtzeit

10.12.2018 phpler | Kategorie: PHP/ Besucherzaehler
jQuery Mobile ansehen jQuery Mobile

Touch-Optimized Web Framework für Smartphones & Tablets

09.12.2018 phpler | Kategorie: AJAX/ Framework
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 06:56 Uhr.