Синхронизация потоков в php

12
kolchakA
На сайте с 19.06.2010
Offline
224
4695

Как можно синхронизировать работу потоков в php? То есть чтобы один участок кода в одно время могла исполнять только одна версия скрипта?

Автоматизация для SEO : подключение API, пайпланы из нескольких сервисов, AI генерация контента
ParserYa
На сайте с 04.10.2010
Offline
29
#1

Самый простой метод псевдо критической секции - это что бы скрипт, когда начал работать писал в файлик: "Работаю". А когда заканчивал, переписывал файлик: "Не работаю". И проверять этот файлик.. если уже работает, то выход =)

Если у вас скрипт использует БД PostgreSQL, там можно временно блокировать получение/изменение данных из таблиц. Тоже очень удобно для синхронизации, но PG далеко не у всех... :)

LEOnidUKG
На сайте с 25.11.2006
Online
1771
#2
ParserYa:
Самый простой метод псевдо критической секции - это что бы скрипт, когда начал работать писал в файлик: "Работаю". А когда заканчивал, переписывал файлик: "Не работаю". И проверять этот файлик.. если уже работает, то выход =)

Ну чтобы не читать, что в файле написана, его просто можно создавать, а после окончания работы удалять :)

Так же можно в БД создать раздел, куда записывать работает ли скрипт или нет.

✅ Мой Телеграм канал по SEO, оптимизации сайтов и серверов: https://t.me/leonidukgLIVE ✅ Качественное и рабочее размещение SEO статей СНГ и Бурж: https://getmanylinks.ru/ ✅ Настройка и оптимизация серверов https://getmanyspeed.ru/
ParserYa
На сайте с 04.10.2010
Offline
29
#3
LEOnidUKG:
Ну чтобы не читать, что в файле написана, его просто можно создавать, а после окончания работы удалять

Понимаю, что паранойя.. но не доверяю я динамическому созданию/удалению файлов... :) Вот читать/писать в уже созданный файл - другое дело :)

[Удален]
#4

писать на нормальном языке, поддерживающем потоки. пхп не многопоточный, не надо из него делать то, для чего он не предназначен

WS
На сайте с 17.11.2010
Offline
25
#5
kolchakA:
Как можно синхронизировать работу потоков в php? То есть чтобы один участок кода в одно время могла исполнять только одна версия скрипта?

Смотрите семафоры и разделяемую память.

Можно конечно и с файлами, но тогда лучше использовать блокировку на запись, если блокировка не доступна значит код выполняется.

Типа того

1. блокировка

2. если блокировка не доступна - sleep или exit

3. если доступна выполняем код

WhiteSmartFox добавил 02-02-2011 в 17:17

seodude:
пхп не многопоточный, не надо из него делать то, для чего он не предназначен

кто сказал?

http://www.php.net/manual/en/book.sem.php :)

N
На сайте с 06.05.2007
Offline
419
#6
ParserYa:
Если у вас скрипт использует БД PostgreSQL, там можно временно блокировать получение/изменение данных из таблиц. Тоже очень удобно для синхронизации, но PG далеко не у всех..

Зато у всех есть mysql, а там есть LOCK TABLES.

Кнопка вызова админа ()
[Удален]
#7
WhiteSmartFox:
кто сказал?

херня все это. пишите на нормальном языке, пхп гавно для этих целей. либо разделяйте задачу на "шаги" и пусть каждый скрипт складывает задачи для другого скрипта работника.

_vb_
На сайте с 25.07.2009
Offline
104
#8
seodude:
пхп гавно для этих целей

А вот интересно, почему? Насколько я знаю, пхп какие-то перловые корни имеет? А в перловке с потоками особых проблем нет.

Саратовская фракция серча (). Давайте посчитаемся.
WS
На сайте с 17.11.2010
Offline
25
#9
seodude:
херня все это. пишите на нормальном языке, пхп гавно для этих целей

ууу, много я слышал таких заявлений вроде пхп говно, на самом деле для своих целей он почти идеален (могу сравнивать с десятком языков). Почему из-за одной небольшой проблемы надо менять язык?

И что писать сайт на C++ или на Java EJB только из-за подобной небольшой проблемы?

n0name
На сайте с 22.12.2006
Offline
54
#10

WhiteSmartFox, для своих целей он и в правду почти идеален. Но его цели - это создание сайтов, а не многопоточность.

Из-за небольшой проблемы язык менять не надо. Достаточно решить эту проблему на подходящем языке.

Сервис сравнения цена на VPS (http://vpska.com/)
12

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий