lørdag, januar 23, 2021

PHP flock

Daily Rush Debat Programmering PHP flock

  • Forfatter
    Emne
  • #0

    hausner
    Moderator
    17.185 indlæg
    Offline

    Her er lige en til programmeringsfolket. Jeg vil gerne lave en funktion i php som åbner to filer. Læser fra den ene og skriver i den anden. I sidste ende skal den fil der bliver skrevet til overskrive den fil der bliver læst fra. Jeg har derfor lavet følgende funktion:

    #!/usr/bin/php
    < ?php print("Starting.....\n");$fp_new = fopen("test_new.tmp", "w+"); $fp_old = fopen("test_old.txt", "r");flock($fp_new,LOCK_EX);print("Sleeping 7 sec..."); sleep(7);fwrite($fp_new, "Writing too file\n");$cmd = "/usr/bin/sudo -u root rm test_old.txt"; $out = exec($cmd); #unlink("test_old.txt");$cmd = "/usr/bin/sudo -u root cp test_new.tmp test_old.txt"; $out = exec($cmd); #copy("test_new.tmp","test_old.txt");#unlink("test_new.tmp"); $cmd = "/usr/bin/sudo -u root rm test_new.tmp"; $out= exec($cmd);flock($fp_new, LOCK_UN);fclose($fp_new); fclose($fp_old);print("Ending.....\n"); ?>

    Problemet opstår når jeg stresstester funktionen. Det viser sig at filen ganske rigtigt ikke bliver låst op før at jeg beder om det til sidst. Men sletningen af filen ($cmd = “/usr/bin/sudo -u root rm test_new.tmp”;) tager tilsyneladende så lang tid at udføre at et anden fil har nået at få skriverettigheder til den inden at den rent faktisk er væk i filsystemet. Derfor bliver der ikke lavet en ny fil og når der så forsøges at skrive til den får jeg en fejl om at filen ikke eksistere.

    Spørgsmål: Hvordan får jeg min php funktion til at vente til kommandoen rent faktisk er udført til fulde.

    Jeg håber dette er forklarende nok ellers spørg løs.

    Planter er fascinerende

Viser 2 kommentarer - 1 til 2 (af 2 i alt)
  • Forfatter
    Kommentarer
  • #1

    Munter
    Bruger
    2.473 indlæg
    Offline

    Er det en del af specifikationen at du skal bruge en midlertidig fil?

    Du burde da sagtens kunne klare dig uden ved blot at udføre dine operationer i hukommelsen i stedet.

    "Everybody wants to laugh but nobody wants to cry, Everybody wants to go to heaven... but nobody wants to die!"--Larry Howard

    #2

    hausner
    Moderator
    17.185 indlæg
    Offline

    #1
    Ja desværre.

    Planter er fascinerende

Viser 2 kommentarer - 1 til 2 (af 2 i alt)
  • Du skal være logget ind for at kommentere på dette indlæg.