| | | | |
| |||||||
| PHP-Fortgeschrittene Arbeiten mit PHP ohne Einschränkungen |
|
| | LinkBack | Themen-Optionen | Thema bewerten |
| | |
| PHP Code Flüsterer Registriert seit: 21.08.2005 Beiträge: 4682 PHP-Kenntnisse: Fortgeschritten | |
| | |
| Moderator Registriert seit: 18.07.2005
Beiträge: 4.072
![]() ![]() | Ich habe noch nicht mit Semaphoren gearbeitet, doch http://de3.php.net/sem_get sagt mir, dass du beim zweiten Aufruf der Funktion eine andere Resource ID zurückbekommst, als beim ersten Mal. Vielleicht liegt da der Hund begraben. |
| | |
| | |
| Neuer Benutzer Registriert seit: 11.02.2010
Beiträge: 13
PHP-Kenntnisse: Anfänger ![]() | ja, das ist richtig, aber die unterschiedlichen IDs "greifen ... auf den gleichen darunterliegenden Semaphor zu." (Quelle) Und dieses Verhalten wird von meinen Versuchen bestätigt: Wenn ich also ein Semaphore sperre, kann ein anderes Script dieses nicht erneut sperren (Bzw. wartet an dieser Stelle, bis es wieder frei geworden ist). Es ist mir nur nicht möglich, dieses Semaphore von einem anderen Script aus zu entsperren. (Löschen geht übrigens auch, aber das verursacht verständlicherweise noch viel mehr Fehler) Geändert von nobnt (13.10.2010 um 16:15 Uhr). Grund: logikfehler durch Satzbau beseitigt |
| | |
| | |
| Erfahrener Benutzer Registriert seit: 07.09.2009
Beiträge: 4.005
PHP-Kenntnisse: Fortgeschritten ![]() ![]() ![]() ![]() | Bin da auch kein Fachmann, aber Script 2 ruft kein sem_acquire() auf, daher wird wohl sem_release() nichts zum Freigeben haben... sem_release() releases the semaphore if it is currently acquired by the calling process. So wie ich das verstehe, wird pro Script eine Semaphore angelegt (sem_get()), dann wird versucht, diese zu belegen (sem_acquire()). Sollte das nicht klappen, weil die Semaphore bereits belegt ist, blockt der Aufruf solange, bis die Semaphore frei wird. Ansonsten wird das Script weiter abgearbeitet, bis die Semaphore am Ende wieder freigegeben wird. PHP-Code:
__________________ Über 90% aller Gewaltverbrechen passieren innerhalb von 24 Stunden nach dem Konsum von Brot. |
| | |
| | ||
| Neuer Benutzer Registriert seit: 11.02.2010
Beiträge: 13
PHP-Kenntnisse: Anfänger ![]() | Zitat:
Mir ist gerade aufgefallen, dass uns das Handbuch auf der deutschen und auf der englischen Seite zwei verschiedene $perm Werte als Standard unterjubeln möchte. Vielleicht ist das ein Ansatzpunkt an dem ich noch mal genauer nachschauen sollte. Aber wenn jemand noch einen Hinweis hat, nur her damit. | |
| | |
| | |
| Erfahrener Benutzer Registriert seit: 07.09.2009
Beiträge: 4.005
PHP-Kenntnisse: Fortgeschritten ![]() ![]() ![]() ![]() | Ist eigentlich auch völlig logisch, denn könntest du eine Semaphore von einem anderen Script aus freigeben, wäre der ganze Sinn der Semaphoren über den Haufen geworfen - jedes Script könnte eine Semaphore, falls gesperrt, freigeben und für sich selber belegen (und damit Zugriff auf die kritische Resource bekommen, die eigentlich durch die Semaphore geschützt werden sollte). Faktisch würde die Semaphore ignoriert werden.
__________________ Über 90% aller Gewaltverbrechen passieren innerhalb von 24 Stunden nach dem Konsum von Brot. |
| | |
| | |
| Neuer Benutzer Registriert seit: 11.02.2010
Beiträge: 13
PHP-Kenntnisse: Anfänger ![]() | Hallo, endlich hab ich dieses schäbbige Problem gelöst. Semaphore sind in der Tat nicht für diese Aufgabenstellung gedacht. Es gibt es aber Signale. Damit funktioniert es, wir ich es mir gewünscht habe. Da dieses Thema hier im Forum nicht so verbreitet ist, wollte ich noch mal ein kleines Beispiel posten. Es grüßt der nobnt PHP-Code: |
| | |
|
| Themen-Optionen | |
| Thema bewerten | |
|
|
| Besucher kamen über folgende Suchanfragen bei Google auf diese Seite |
| sysv semaphore is not currently acquired, kenntnisse der semaphore, php5 wie bekomme ich zugriff auf posix_getpid(), php semaphor, php semaphores, php sem_release, semaphor php, sem_release(): sysv semaphore not acquired, \das semaphore\, sem_get php, sem_release, semaphore freigeben aus anderem bereich, sem_release \is not currently acquired in\ |