php.de

Zurück   php.de > Webentwicklung > PHP-Fortgeschrittene

PHP-Fortgeschrittene Arbeiten mit PHP ohne Einschränkungen

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 22.04.2005, 09:56  
Erfahrener Benutzer
 
Benutzerbild von Andreas
 
Registriert seit: 22.04.2005
Beiträge: 391
Andreas ist zur Zeit noch ein unbeschriebenes Blatt
Standard gzopen macht schwierigkeiten

Hallo zusammen,
ich habe mir ein Statistikscript gebaut, welches in einer Datei zeilenweise folgende Infos über jeden User speichern soll:
TIMESTAMP, USERIP, USERBROWSER, USEROS, USERREFERER, USERSCRIPT

Es soll immer eine Zeile bei einem USER hinzugefügt werden.
(Ich hab erkannt, dass das Konzept unbrauchbar ist, aber ich wüsste trotzdem gerne warum meine Variante nicht funktioniert hat)

Da die Datei bei vielen Usern schnell riesig wird, wollte ich das ganze mit gzip zusammenschrumpfen. Das ganze sollte live passieren, das heißt ohne Zwischenspeicher in Form einer temporären Textdatei. Folgendes habe ich versucht:

PHP-Code:
<?php
$file 
'test.txt.gz';

$new 'neue Zeile';
$gp gzopen($file'ab9');
gzwrite($gp$new."\r\n");
gzclose($gp);
?>
Funktioniert, aber dabei wird die Datei aber nicht komprimiert.

2. Versuch
PHP-Code:
<?php
$file 
'test.txt.gz';

$new 'neue Zeile';
$old = @implode(''gzfile($file));

$gp gzopen($file'wb9');
gzwrite($gp$old.$new."\r\n");
gzclose($gp);
?>

Funktioniert, die Datei wird komprimiert, aber ab einer größe von ungefähr 7kb resettet er die Datei ganz oder schreibt Zeichensalat rein.

Hat jemand ne Idee?

Gruß
Andreas
Andreas ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 22.04.2005, 10:15  
Moderator
 
Benutzerbild von robo47
 
Registriert seit: 03.09.2004
Beiträge: 11.792
PHP-Kenntnisse:
Fortgeschritten
robo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz sein
Standard

PHP-Code:
<?
error_reporting 
(E_ALL);
$file 'test.txt.gz';
$new implode(range(1,1000));
$test '';
if (
file_exists($file))
{
    
$gp gzopen($file'rb9');
    
$test gzread($gp,9999999);
    
gzclose($gp);
}


$old $test;

$gp gzopen($file'wb9');
gzwrite($gp$old.$new."\r\n");
gzclose($gp);
?>
<div style="overflow: scroll; width: 600px; height: 800px;">
<? echo ($old); ?>
</div>
kannst ja mal testen, das funktioniert bei mir ohne ende, den zeichensalat bekomm ich nur hin, wenn ich F5 gedrückt halte, weil dann wohl synchron auf die datei zugegriffen wird udn das scheint schief zu gehen.

mfg
robo47
robo47 ist offline   Mit Zitat antworten
Alt 22.04.2005, 10:29  
Erfahrener Benutzer
 
Benutzerbild von Andreas
 
Registriert seit: 22.04.2005
Beiträge: 391
Andreas ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
wenn ich F5 gedrückt halte, weil dann wohl synchron auf die datei zugegriffen wird
Aha! Das hatte ich auch gemacht um die Performance zu testen. Mmh. Dann scheint das ganze für große Usermengen gänzlich ungeeignet zu sein, den da ist synchroner Zugriff wahrscheinlich unumgänglich. Ob "flock()" auch bei gzopen() funktioniert?...*gg*

Danke für die prompte Hilfe
Andreas ist offline   Mit Zitat antworten
Alt 22.04.2005, 10:37  
Moderator
 
Benutzerbild von robo47
 
Registriert seit: 03.09.2004
Beiträge: 11.792
PHP-Kenntnisse:
Fortgeschritten
robo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz sein
Standard

vieleicht mal durchlesen:

http://www.phpfriend.de/forum/viewto...ht=dateisperre

desweiteren ein auszug aus dem manual:
Zitat:
flock() funktioniert nicht auf NFS und verschiedenen anderen vernetzten Dateisystemen. Für weitere Detail konsultieren Sie bitte Ihre Betriebssystemdokumentation.

Bei einigen Betriebssystemen ist flock() auf dem Prozesslevel implementiert. Wenn Sie ein multithreaded Server API wie ISAPI benutzen können Sie sich nicht auf flock() verlassen, um Dateien vor anderen PHP-Skripten zu schützen, welche in parallelen Threads der gleichen Server-Instanz laufen!

flock() wird antiquierten Dateisystemen wie FAT und dessen Derivate nicht unterstützt, und gibt deshalb in solchen Umgebungen immer FALSE zurück (Dies ist speziell bei Windows 98 Benutzern der Fall).
musst du halt mal ausprobieren und gegenbenenfalls mal im manual in den kommenateren lesen, da steht bestimmt ne menge drin. was für ne file du im endeffekt logst ist eignetlich egal, da sich eignetlich alle datei-handling-funktionen daran hlten müssten wenn du es so aufbaust.
robo47 ist offline   Mit Zitat antworten
Antwort


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine 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
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
upload schwierigkeiten Kenshin PHP Tipps 2008 9 01.07.2008 12:21
Schwierigkeiten beim Datum speichern in Mysql pherfinion PHP Tipps 2005-2 1 31.08.2005 16:55
Problem mit gzopen MortakArtos PHP Tipps 2005 13 24.04.2005 18:41

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
php gzopen, gzopen, php merge array, gzwrite windows, php gzopen -f, php gzopen ganzen ordner, gzopen für url deutsch, gzopen append, check gzopen, php gzopen gzclose, gzwrite performance, php gzopen append, gzopen false, gzopen funktioniert nicht, gzread zeile, php gzopen .net gzipstream, gzopen nicht gefunden, gzopen ab, gzopen php txt, php gzip gzopen gzread

Alle Zeitangaben in WEZ +2. Es ist jetzt 20:30 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.