Hoe te: Non-Blocking Toegang van de Seinpaal in PHP
De seinpaal wordt gebruikt om toegang tot gedeelde middelen, zoals gedeeld geheugen te beperken of het aantal processen te beperken dat een middel, in een multi-proces of multi-threaded milieu kan gelijktijdig gebruiken.
In php die seinpaal gebruikt moet een proces wachten terwijl het toegang tot van een gedeeld middel dat momenteel door een ander proces wordt gebruikt. Maar dit kan niet voor alle gevallen worden vereist. Soms moeten wij enkel verifiëren of een middel en beweging is gesloten. Jammer genoeg hebben wij geen manier om de status van een seinpaalslot in php te controleren. Zie hoe wij non-blocking seinpaaltoegang in PHP kunnen uitvoeren.
Aangezien de seinpaalbibliotheek ons niet geeft wat wij nodig hebben zullen wij dossierbestaan als slot moeten in plaats daarvan gebruiken. Het concept en de implementatie zijn eenvoudig:
1. Alvorens tot een gedeeld middel toegang te hebben u moet controleren of een vooraf bepaald dossier (zeg .lock) bestaat en de tijd van de dossierwijziging geen vast overschrijdt (configureerbaar) verloopt tijd. De tweede voorwaarde wordt vereist om van oude sloten terug te krijgen die niet wegens abrupte beëindiging van het vorige proces of andere redenen zijn ontruimd.
2. Als één van beiden van de voorwaarde niet voldaan aan in stap 1 toen is cre�ër of wijzig het slotdossier en gebruik het gedeelde middel. Nadat u wordt gedaan, moet u het slotdossier schrappen om verdere toegang van het gedeelde middel te verlenen. Het schrappen moet ongeacht om het even welke foutenvoorwaarde in vroegere stadia worden gedaan door juiste uitzondering/fouten van vroegere stappen te behandelen abrupte beëindiging verhinderen.
3. Als de beide voorwaarden dan aan voldaan zijn is het middel momenteel gesloten en niet beschikbaar. Nu kunt zich u of periodiek in een lijn met slaap wachten en controleren of op volgende taken bewegen.
Laat hoe bekijken wij dit met steekproefcode kunnen uitvoeren:
als (file_exists („.lock“) && ((tijd () - filemtime (“ .lock ")) < 1800="">
Filed het onder Nieuws van de Krantekop, PHP, Programmering |
|
RSS 2.0 |
Trackback dit Artikel |
E-mail dit Artikel
U kunt ook van houden te lezen |


Voeg aan Favorieten Technorati toe

































