[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Обмен данных между скриптами (блокировки)
Exeplor
Как правильно реализовать корректный обмен данных между нескольких одновременно запущенных скриптов? Существует некий глобальный массив, к которому обращаются все скрипты (запись/чтение) в хаотичном порядке. База, файлы, локальное хранилище?
Возможно для этого существуют какие-либо классы/расширения? Спасибо.
kaww
Слишком общая формулировка. конкретизируйте задачу. А вообще вариантов масса - это может быть и база и файлы, либо какая-нибудь AMQP-штука.
Что касается последнего, то можно посмотреть в сторону RabbitMQ
З.Ы. php имеет реализацию AMQP - http://www.php.net/manual/ru/book.amqp.php
dr.nomore
Существуют файлы.
Exeplor
Система была реализована с помощью файлов (lock, read, write, unlock). Вариант рабочий, но не стабильный.

В теории данных может быть большое количество. В связи с этим скорость чтения файлов очень падает (при увеличении данных).

Суть глобального массива состоит в возможсти установить блокировку на момент чтения и записи данных одним скриптом. Данный метод позволяет реализовать межскриптовый array_shift, к примеру.
Valick
Цитата
Вариант рабочий, но не стабильный.

это проблемы автора скрипта, где гарантии что сделано все правильно?

По описанной вами задаче БД нормально подходит


_____________
Стимулятор ~yoomoney - 41001303250491
Exeplor
Цитата
это проблемы автора скрипта, где гарантии что сделано все правильно?

Гарантий нет. В рамках задачи база исключена, к сожалению.
Буду рад услышать тех кто сталкивался с подобной задачей.
sergeiss
Почему база исключена? Что за задача такая?

_____________
* Хэлп по PHP
* Описалово по JavaScript
* Хэлп и СУБД для PostgreSQL

* Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги.

* "накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)

user posted image
linker
Если свой сервак, то предложу очередь сообщений. Если хочется заморочиться, то можно и RabbitMQ, но можно обойтись и стандартными функция PHP:
msg_get_queue(), msg_send(), msg_receive() и пр.

_____________
Gear Framework
Gear Framework на Github
nikolaevevge
Чтобы стандартные функции php (такие как msg_get_queue(), msg_send(), msg_receive() ) заработали помнится мне на CentOs 6 пришлось поставить process (yum install process)
На деле очень мощная штука. На мой взгляд самая удобная штука для межскриптового оперативного взаимодействия. Единственное что описания на русском всё ещё маловато. Даже на хабре ничего особо нет.
nikolaevevge
Ещё один из способов решения данной задачи использовать кэш. Например в APC есть стандартные функции для этого
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.