Mehrere modi für fopen
manuel
- php
Hallo,
folgendes Prob:
Habe eine Datei - soll so was wie ein Zähler werden. Zuerst wird das erste Zeichen (ist auch das einzigste) mit fgets in einer Variable eingelesen, dann in die selbe Datei per fputs($DATEI,++$ZAHL); geschrieben - ich brauche also r UND w als zweiten parameter in fopen, oder?
Also so:
fopen($DATEI,"r" "w");
doch das gibt einen fehler aus. Wie funktioniert es dann?
Hallo manuel.
fopen($DATEI,"r" "w");
doch das gibt einen fehler aus. Wie funktioniert es dann?
Siehe PHP Manual: fopen().
Freundschaft!
Siechfred
Ich bin heute ein bisschen schwer von Begriff: Wo steht da wie man zwei Parameter angeben kann?
Moin manuel,
»» Ich bin heute ein bisschen schwer von Begriff: Wo steht da wie man zwei Parameter angeben kann?
eben.... gar nicht. Es gibt nur einen.
regds
Mike©
Hallo manuel.
Ich bin heute ein bisschen schwer von Begriff: Wo steht da wie man zwei Parameter angeben kann?
Du kannst keine zwei Parameter angeben, du musst dir aus der Tabelle der möglichen Modi den für deine Zwecke passenden heraussuchen. Der dürfte wohl "r+" sein.
Freundschaft!
Siechfred
Du kannst keine zwei Parameter angeben, du musst dir aus der Tabelle der möglichen Modi den für deine Zwecke passenden heraussuchen. Der dürfte wohl "r+" sein.
Aber mit r+ kann ich nur lesen - ich muss zuerst lesen, und dann reinschreiben. r+ kommt dafür nicht infrage, würde ich sagen.
hi,
Aber mit r+ kann ich nur lesen
langsam bekomme ich zweifel, ob _du_ überhaupt lesen kannst, sorry.
- ich muss zuerst lesen, und dann reinschreiben. r+ kommt dafür nicht infrage, würde ich sagen.
was steht denn auf der von Siechfred verlinkten seite bezüglich des parameters 'r+'?
'r+' Öffnet die Datei zum Lesen und Schreiben und setzt den Dateizeiger auf den Anfang der Datei.
gruß,
wahsaga
'r+' Öffnet die Datei zum Lesen und Schreiben und setzt den Dateizeiger auf den Anfang der Datei.
ich wusste, dass jemand schneller ist...maan
Gruß,
Benne
Moin manuel,
Du kannst keine zwei Parameter angeben, du musst dir aus der Tabelle der möglichen Modi den für deine Zwecke passenden heraussuchen. Der dürfte wohl "r+" sein.
wenn du nicht mit Satzzeigern arbeiten möchtest, dann:
Datei lesen "r"
Datei schließen.
Datei neu öffnen "w"
Wert schreiben
Und Datei wieder schließen
Thats it
regds
Mike©
Aber mit r+ kann ich nur lesen - ich muss zuerst lesen, und dann reinschreiben. r+ kommt dafür nicht infrage, würde ich sagen.
r+ - Öffnet die Datei zum Lesen *und* Schreiben und setzt den Dateizeiger auf den Anfang der Datei.
Gruß,
Benne
hi,
Ich bin heute ein bisschen schwer von Begriff: Wo steht da wie man zwei Parameter angeben kann?
gar nicht, weil das nicht geht.
da steht aber sehr wohl, welche parameter außer r und w es noch gibt ...
gruß,
wahsaga
ähm ...
meines Wissens heißt es "mehrere modus" (was aber wie "moduhhhhs" gesprochen werden müßte). Ein bißchen Erinnerung an den gewiß lange vergangenen Latein-Unterricht schadet ja nicht ;-)
Grüße aus Berlin
Christoph S.
Hallo Christoph.
meines Wissens heißt es "mehrere modus" (was aber wie "moduhhhhs" gesprochen werden müßte). Ein bißchen Erinnerung an den gewiß lange vergangenen Latein-Unterricht schadet ja nicht ;-)
Ich dachte immer, "modata" wäre korrekt ...
Freundschaft!
Siech*scnr*fred
also Siechfred,
Ich dachte immer, "modata" wäre korrekt ...
Sowas _kannst_ du doch jetzt Toni Ott nicht antun, seitdem er im August in gesegnetem Alter entschlafen ist. Ein bißchen mehr Respekt vor unseren Lehrern erwarte ich doch von dir, selbst wenn sie nun in Ehren dahinscheiden (bloß Paule Engel vergeht einfach nicht und wird im kommenden Jahr gewiß wieder an unserer 30-Jahre-Abitur-Feier teilnehmen und zum 43. mal erzählen, wie ihm die ersten grauen Haare gewachsen sind, als ich, bis dahin immerhin sein Vorzeigemathematiker, plötzlich in der mündlichen Matheprüfung zu versagen drohte)
Grüße aus Berlin
Christoph S.
Hallo Christoph.
Sowas _kannst_ du doch jetzt Toni Ott nicht antun, seitdem er im August in gesegnetem Alter entschlafen ist.
Oh, das wusste ich nicht bzw. es war mir entfallen.
Ein bißchen mehr Respekt vor unseren Lehrern erwarte ich doch von dir
Na, du weißt doch, mir waren die Altsprachen nicht vergönnt ...
bloß Paule Engel vergeht einfach nicht
Mein Gott, Paule muss doch schon stramm auf die 80 zugehen, wenn er sie nicht sogar schon überschritten hat.
Freundschaft!
Siechfred
hallo Torsten,
Mein Gott, Paule muss doch schon stramm auf die 80 zugehen, wenn er sie nicht sogar schon überschritten hat.
Er hat sie bereits deutlich überschritten. Aber er hat auch die Möglichkeit entdeckt, sich jetzt von Jahr zu Jahr bei irgendwelchen Abiturfeiern seiner ehemaligen "Schäfchen" herumreichen zu lassen, und nimmt das offensichtlich mit Vergnügen wahr. Ich weiß das von mehreren Klassenstufen unserer Penne, und sie alle finden das gut, weil Paule der "Engel" geblieben ist, der er auch als Lehrer schon war. Ein paar liebenwürdige Schwächen gibts natürlich. Das macht aber nix. Paule Engel war und ist immer noch der Mann, der aus seinem Familiennamen ein Programm machen konnte - freilich ohne zu verstehen, was er damit für seine Schüler anrichtete.
Grüße aus Berlin
Christoph S.
Hallo Christoph.
Er hat sie bereits deutlich überschritten [...]
Naja, ich bekomme regelmäßig Infos über Paule, da meine Eltern bei seinem Sohn in Behandlung sind :) Aber dass er die 80 schon überschritten hat, wusste ich noch nicht, irgendwie sieht er bei jedem Klassentreffen immer noch so aus wie anno 1989/90.
Freundschaft!
Siechfred
ähm ...
Ebenfalls: äähm...
meines Wissens heißt es "mehrere modus" (was aber wie "moduhhhhs" gesprochen werden müßte). Ein bißchen Erinnerung an den gewiß lange vergangenen Latein-Unterricht schadet ja nicht ;-)
Soweit ich weiß ist es modi!? Hatte nie latein, nur englisch und französisch - realschule halt
hallo manuel,
Soweit ich weiß ist es modi!? Hatte nie latein, nur englisch und französisch - realschule halt
Dann misch dich hier mal nicht ein, ja!
Kusch!
Lerne Latein!
In die Ecke stellen und mindestens dreizehn Kniebeugen machen!
Grüße aus Berlin
Christoph S.
Hallo Christoph,
meines Wissens heißt es "mehrere modus" (was aber wie "moduhhhhs"
gesprochen werden müßte). Ein bißchen Erinnerung an den gewiß lange
vergangenen Latein-Unterricht schadet ja nicht ;-)
Mein Stowasser sagt »modus, -i (m) - Art und Weise«. Also Modi.
Grüße,
CK
hallo CK,
Mein Stowasser sagt »modus, -i (m) - Art und Weise«. Also Modi.
Hundertwasser war ein Ästhet, aber kein Lateinkundiger *gg*
Mein Taschenheinichen sagt:
modus, u (m) - Maß (urv.), Maßstab; Größe; Grenze; Mäßigung; Vorschrift; Art, Form, Melodie
Und mein Benseler (Ausgabe immerhin von 1897, aber als Lehrbuch bei uns 1966 bis 1970 zugelassen) behauptet dasselbe.
In diesem Fall stelle ich ausnahmsweise mal die These auf, daß der, der sich auf die älteren Quellen stützt, recht hat ;-)
Grüße aus Berlin
Christoph S.
Hallo Christoph,
Mein Stowasser sagt »modus, -i (m) - Art und Weise«. Also Modi.
Hundertwasser war ein Ästhet, aber kein Lateinkundiger *gg*
Der Stowasser ist das Standard-Woerterbuch der deutschen Schueler- und
Studentenschaft fuer Latein, vergleiche auch
http://www.amazon.de/exec/obidos/ASIN/3209014957/
Mein Taschenheinichen sagt:
modus, u (m) - Maß (urv.), Maßstab; Größe; Grenze; Mäßigung;
Vorschrift; Art, Form, Melodie
Falsches Wort. modus mit der Bedeutung »Art und Weise« ist eindeutig
o-Deklination, bisher hab ich das noch nicht anders gesehen. Wohl aber habe
ich modus in der u-Deklination auch schon gesehen.
Grüße,
CK
hallo CK,
Der Stowasser ist das Standard-Woerterbuch der deutschen Schueler- und
Studentenschaft fuer Latein, vergleiche auch http://www.amazon.de/exec/obidos/ASIN/3209014957/
Weiß ich doch - wir hatten das übrigens schonmal, wenn du dich im Archiv umschaust.
Mein Taschenheinichen sagt:
modus, u (m) - Maß (urv.), Maßstab; Größe; Grenze; Mäßigung;
Vorschrift; Art, Form, Melodie
Falsches Wort.
Aaaahhh - ja, das ist möglich. Aber um das jetzt auseinanderzuklamüsern, müßte ich meinen Holunderwein für den Rest des Abends wegschließen, und _das_ willst du mir doch nicht antun, oder?
Wohl aber habe ich modus in der u-Deklination auch schon gesehen.
Na bitte. Man müßte das einen außergerichtlichen Vergleich nennen. Den habe ich natürlich gewonnen, weil ich mehr Holunderwein im Haus habe als du ;-)
Grüße aus Berlin
Christoph S.
PS: welche Bedeutung hat der elfteelfte in diesem Zusammenhang?
Moin moin
Na bitte. Man müßte das einen außergerichtlichen Vergleich nennen. Den habe ich natürlich gewonnen, weil ich mehr Holunderwein im Haus habe als du ;-)
PS: welche Bedeutung hat der elfteelfte in diesem Zusammenhang?
1.) Holunderwein kann man nur runterwürgen, wenn man besoffen ist.
2.) Karneval wirft seinen Schatten unter die Augen...
Und Du hast über Kölsch geschimpft... tststs :)
Gruß,
Marc.
Hi,
Und Du hast über Kölsch geschimpft... tststs :)
Hat Kölsch noch einen anderen Existenzgrund?
cu,
Andreas
Hallo du da draußen,
meines Wissens heißt es "mehrere modus" (was aber wie "moduhhhhs" gesprochen werden müßte). Ein bißchen Erinnerung an den gewiß lange vergangenen Latein-Unterricht schadet ja nicht ;-)
Das war vielleicht bei »Kasus« so, nicht aber bei »Modus«. Aber ich musste auch nachschlagen; die Lateiner sind da ja ziemlich komisch mit ihren Deklinationen:
Kasus -- Kasus
Modus -- Modi
Tempus -- Tempora
Und da soll noch einer durchblicken... ;-)
Grüße von hier drinnen, aus Biberach an der Riss,
Candid Dauth (Dogfish)
Hi,
meines Wissens heißt es "mehrere modus" (was aber wie "moduhhhhs" gesprochen werden müßte). Ein bißchen Erinnerung an den gewiß lange vergangenen Latein-Unterricht schadet ja nicht ;-)
Meines Wissens gehört modus zur zweiten Deklination (o-Deklination), womit der Plural modi korrekt ist.
Zur 4. Deklination (u-Deklination) gehört neben dem bereits erwähnten casus auch folgende auf us endende Worte:
status, manus, domus, tribus
Und natürlich die auf u endenden Worte wie cornu.
cu,
Andreas
hi retour,
Zur 4. Deklination (u-Deklination) gehört neben dem bereits erwähnten casus auch folgende auf us endende Worte:
status, manus, domus, tribus
Und natürlich die auf u endenden Worte wie cornu.
CUM CORNU MEO AUFSPIESSU TEO
Womit wir deutlich in die Nähe des 11.11. rücken ...
;-)
freundlichen Abend noch
Christoph S.
Hello,
Du braucht vor allem eine Locking-Strategie. Die íst in Deinem Fall aber noch ganz einfach.
Benutze einfach die Funktion:
#------------------------------------------------------------------------------
#------------------------------------------------------------------------------
function softlock( $lockfile_name, ## Qualifizierter Dateiname
$mode, ## Öffnungs- und Sperranforderung wie oben
&$lastwrite, ## Letztes Aktualisierungsdatum
&$error_no ## Duchgeschleifter Fehler
)
{
$php_errormsg =''; ## ist nicht angelegt, solange
## kein Fehler auftrat
$lastwrite = false; ## kein Modifikationsdatum vorhanden
if ($error_no > 0) return false; ## Bei Vorfehler abbrechen
## Lockmode feststellen
$lockmode = strtoupper($mode);
if ($mode == 'W')
{
$openmode = 'rb+';
$lockmode = LOCK_EX;
}
elseif ($mode == 'C')
{
$openmode = 'xb+';
$error_no = 8; ## Datei wurde angelegt
$lockmode = LOCK_EX;
}
elseif($mode == 'R')
{
$openmode = 'rb';
$lockmode = LOCK_SH;
}
else
{
$error_no = 100; ## falsche Funktionsnutzung
return false;
}
## Dateihandle beschaffen
for ($x=0;$x<5;$x++) ## Schleife 5 mal durchlaufen
{
clearstatcache();
$php_errormsg = '';
if($lh = @fopen($lockfile_name,$openmode))
{
$error_no = 0;
break; ## oder bei Erfolg abbrechen
}
else
{
$errormsg = strtolower($php_errormsg);
if(strpos($errormsg,'invalid argument')!==false)
{
$error_no = 101; ## hier könnte man auch überlegen
$openmode = 'a+'; ## es doch mit rb+ zu versuchen
if ($fh1 = fopen($lockfile_name,$openmode))
{
$openmode = 'rb+'; ## es doch mit rb+ zu versuchen
fclose($fh1); ## Hilfshandle wieder abgeben
$error_no = 8;
}
else
return false;
}
elseif(strpos($errormsg,'illegal operation argument')!==false)
{
$error_no = 101;
$openmode = 'a+'; ## Datei hilfsweise mit a+ anlegen
if ($fh1 = fopen($lockfile_name,$openmode))
{
$openmode = 'rb+'; ## es doch mit rb+ zu versuchen
fclose($fh1); ## Hilfshandle wieder abgeben
$error_no = 8;
}
else
return false;
}
elseif(strpos($errormsg,'no such file or directory')!==false)
{
$error_no = 2;
return false;
}
elseif(strpos($errormsg,'permission denied')!==false and $error_no == 8)
{
return false; ## damit Fehler 8 überhaupt nach draußen kommt
}
elseif(strpos($errormsg,'permission denied')!==false)
{
$error_no = 5;
return false;
}
elseif(strpos($errormsg,'file exists')!==false)
{
$openmode = 'rb+';
}
}
## zur Zeit sind fopen() und dio_open() noch nicht aufeinander abgestimmt
## Eine Verzögerung beim Öffen ist daher noch nicht sinnvoll
#usleep(8000); ## 8ms warten bis zum nächsten
} ## Öffnungsversuch
if (!$lh)
{
$error_no = 5; ## konnte Datei nicht öffnen
return false; ## bei Misserfolg Funktionsende
}
# Lockversuch
for ($x=0;$x<5;$x++)
{
if (@flock($lh,$lockmode + LOCK_NB))
{
$lastwrite = filemtime($lockfile_name); ## letzes Modifikationsdatum
return $lh;
}
usleep(8000); ## 8ms warten bis zum nächsten Versuch
}
$error_no = 6; ## konnte Datei nicht sperren
fclose($lh);
return false;
}
Wenn die ein Handle zurückliefert, kannst Du arbeiten, wenn nicht, musast Du halt den Fehler auswerten. Ich habe zum Thema "Dateiöffnung " und "Locking" immer noch einen dreiviertelfertige Artikel hier rumfliegen. Ich komme einfach nicht dazu, dafür mal die Grafiken anzufertigen zum Thema "Zeitverhalten".
Harzliche Grüße aus http://www.annerschbarrich.de
Tom