php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2008

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 27.12.2008, 11:38  
Erfahrener Benutzer
 
Registriert seit: 09.11.2008
Beiträge: 200
smilla befindet sich auf einem aufstrebenden Ast
Standard [Erledigt] Arbeiten mit Dateien in Bezug auf flock (sperren und freigeben)

Hi,

Es geht darum dass ein Script mit Dateien arbeitet und ich möglichst keine Probleme mit der Nebenläufigkeit haben will, wenn mehrere Leute ein Script gleichzeitig ausführen.

In meine Beispiel geht es darum eine Datei zu schreiben. Während des Schreibens soll diese gesperrt werden. Hier derzeit mein Code:

PHP-Code:
$fp fopen($filename"w+");
if (
$fp)
{
   
flock($fpLOCK_EX);
   
fwrite($fp$new_content);
   
flock($fpLOCK_UN);
   
fclose($fp);
}
else
{
   
// try again
   
$fp fopen($filename"w+");
   if (
$fp)
   {
      
flock($fpLOCK_EX);
      
fwrite($fp$new_content);
      
flock($fpLOCK_UN);
      
fclose($fp);
   }
   else
   {
      
// und hier nocht ein weiteres mal
   
}

Meine Fragen Quasi, die ich mit Hilfe der PHP Manual nicht beantworten konnte:

1. Ist das so bullshit dass ich 3x hintereinander versuche den Code auszuführen? Oder würde 1x ausreichen?

2. Nun habe ich gesehen, dass es bei flock den dritten Parameter nutzen kann. Bevor der Nutzer warten muss, würde ich hier gerne abbrechen. Allerdings ist mir nicht ganz klar, wie ich es richtig integriere. In der PHP Manual gibt es dafür leider kein Beispiel.

Das wars auch schon. Freue mich auf Feedback.
smilla ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

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

Alt 27.12.2008, 13:27  
Erfahrener Benutzer
 
Benutzerbild von Phoscur
 
Registriert seit: 01.12.2008
Beiträge: 450
PHP-Kenntnisse:
Fortgeschritten
Phoscur wird schon bald berühmt werdenPhoscur wird schon bald berühmt werden
Standard

Drei verschachtelte IFs? Hört sich wirklich nicht so elegant an. Wahrscheinlich kannst du das besser in eine WHILE Schleife packen und bedarfsweise aussteigen.
*grad nochmal einen Blick ins Manual geworfen*
Da ist ja ein Beispiel (in den Kommentaren), wie man das gut anlegt.
Was das &$wouldblock angeht bin ich auch überfragt. Keines der Kommentare enthält eine gescheite Verwendung und das Handbuch drückt sich auch nicht gerade einfach aus.
Wahrscheinlich müsste man das einfach mal testen.
PHP-Code:
flock($fileLOCK_EX$wb);
if (
$wb) {
    die(
'File would block');

__________________

Geändert von Phoscur (27.12.2008 um 13:36 Uhr).
Phoscur ist offline  
Alt 27.12.2008, 13:46  
Supermoderator HD
 
Benutzerbild von Manko10
 
Registriert seit: 16.03.2008
Beiträge: 8.709
PHP-Kenntnisse:
Fortgeschritten
Manko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende Zukunft
Standard

@Phlegma: du kannst noch den Parameter LOCK_NB zu $operation hinzufügen:
PHP-Code:
flock($fileLOCK_EX LOCK_NB$wouldblock);
if (
$wouldblock) {
    die(
'Would block');

Soweit ich weiß, gibt $wouldblock true zurück, wenn flock() das Skript blockieren müsste, um einen Lock zu setzen. Da flock() in diesem Falle aber auf die Auflösung des aktuellen Locks warten (also blockieren) würde, sollte noch LOCK_NB addiert werden, um den Wert von $wouldblock im Falle eines Falles gleich zu bekommen.
__________________
Refining Linux Advent Calendar series “24 Outstanding ZSH Gems
Manko10 ist offline  
 


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
Arbeiten mit Dateien (Gästebuch) GELight PHP Tipps 2005 13 03.04.2005 09:08
frage zum arbeiten mit dateien PHP Tipps 2005 21 01.03.2005 13:22

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
flock php, wouldblock, php flock, flock bezug, sperre freigeben flock, php flock warten bis datei frei, php flock prüfen ob eine datei gesperrt ist, datei im ifs sperren, flock script abbrechen, flock() php, php-skript freigeben sperren dateien, php flock schleife, php flock wouldblock

Alle Zeitangaben in WEZ +2. Es ist jetzt 18:17 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