PECL SYNC i synchronizacja w CLI

0

Nie liczę na pomoc bo to dość niszowy temat, ale może coś ktoś...

Chodzi o to, że jest biblioteka SYNC w PHP do synchronizacji procesów, można tam sobie robić: Mutexy, model Reader-Writer, Semafory etc., wszystko wygodnie i cross-platform: https://www.php.net/manual/en/book.sync.php

Problem pojawia się w trybie CLI w PHP, dla klasy SyncReaderWriter kiedy odpala się np. w danej sekundzie kilkanaście procesów PHP, i każdy chce zrobić readlock na ten sam klucz.

Często te readlocki się nie udają: proces wisi aż skończy się timeout (np. 30 sekund) i zgłasza, że readlock byl nieudany, mimo że żaden inny proces nie blokował tak długo tego klucza na który była proba readlocka writelockiem, a tym bardziej readlockiem, który trwa bardzo krótko: readlock, odczyt w kilka ms, unlock.

Wygląda to jakby można było w trybie CLI założyć tylko kilka readlocków na raz na dany zasób, a założenie kolejnego oznacza zwis, nawet jeżeli już wszystkie inne readlocki są odblokowane.

Może ktoś wie jak z tym wlaczyć? Procesy odpalane przez php-fpm nie mają takiego problemu, tylko CLI.

0

Często te readlocki się nie udają: (...)

No i właśnie to jest powodem dla którego nie używam PHP. To jeden wielki syf, w którym kod robi co sam chce. Ale czego się spodziewać po materialistach?

Prawda jest taka, że stabilność w PHP nie istnieje. Potrzebujesz aby apka działała stabilnie? Pisz we wszystkim poza php

1

Szczerze mówiąc, to nie mam specjalnych problemów ze stabilnością w PHP. Ten problem to bardziej może kwestia biblioteki lub braku kompilacji bo akurat w tym przypadku używam gotowych binarek.

W pewnym momencie zrobię test i zainstaluję PHP przez kompilację + kompilację tego SYNCa, byc może w ten sposób problem zniknie.

Po za tym to stara biblioteka, już 3 lata jak nie była aktualizowana, ostatecznie zrobię synchronizację w inny sposób - są jeszcze semafory i inne wynalazki takie jak chociażby file-lock.

1 użytkowników online, w tym zalogowanych: 0, gości: 1