Модераторы: skyboy, MoLeX, Aliance, ksnk

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> обмен данными между двумя запущенными скриптами 
:(
    Опции темы
Viroman
Дата 22.7.2009, 15:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 140
Регистрация: 28.7.2008

Репутация: нет
Всего: нет



Здравствуйте дорогие форумчане!

У меня возник вопрос, необходимо между двумя запущенными скриптами создать обмен информацией. Каким образом это можно реализовать не прибегая к сокетам, поскольку на конечном сервере сокетные пхп соединения запрещены, и как это сделать не прибегая к обмену через файлы, и коль уже нельзя иначе, чем ререз файлы, как сделать так, чтобы скрипт реагировал только тогда, когда в файле новые данные поступили.
Есть ли идеи реализации? Буду очень прекрайне благодарен за наводку.

Далее вопрос номер два, скрипт подаёт данные на скачку, предположим какой нибудь файл, мне очень крайне важно контроллировать скорость этой передачи, чтобы та не превышала опеределённого значения заданного мною. Можно ли и это сделать? Именно скажем, чтобы данные не поступали быстрее одного байта в секунду, предположим. И за решение этой задачи буду прекрайне благодарен.
PM MAIL   Вверх
skyboy
Дата 22.7.2009, 20:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: 1
Всего: 260



вопрос об ограничении скорости отдачи вынеси в новую тему. 
обсуждение двух вопросов в одной теме - это будет бардак.

PM MAIL   Вверх
MoLeX
Дата 23.7.2009, 05:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Местный пингвин
****


Профиль
Группа: Модератор
Сообщений: 4076
Регистрация: 17.5.2007

Репутация: 0
Всего: 140



Цитата(Viroman @  22.7.2009,  15:15 Найти цитируемый пост)
У меня возник вопрос, необходимо между двумя запущенными скриптами создать обмен информацией.

скрипты запущены на одном домене? или же вообще на разный хостинг-площадках?


--------------------
Amazing  smile 
PM MAIL WWW ICQ   Вверх
nerezus
Дата 24.7.2009, 05:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вселенский отказник
****


Профиль
Группа: Участник
Сообщений: 3330
Регистрация: 15.6.2005

Репутация: нет
Всего: 43



Цитата

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

Цитата

Можно ли и это сделать? 
 Да. Паузами.


--------------------
Сообщество художников Artsociety.ru
PM MAIL WWW   Вверх
Viroman
Дата 25.7.2009, 14:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 140
Регистрация: 28.7.2008

Репутация: нет
Всего: нет




Цитата

скрипты запущены на одном домене? или же вообще на разный хостинг-площадках? 

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

Цитата

Купить платный хостинг.

Плохой совет, ещё идеи?


Цитата

 Да. Паузами. 

Но паузами будет ведь не совсем то, или? Какой это контроль за скоростью, если данные будут рывками передаваться, но с полной скоростью.
PM MAIL   Вверх
Mal Hack
Дата 25.7.2009, 14:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Мудрый...
****


Профиль
Группа: Участник Клуба
Сообщений: 9926
Регистрация: 15.2.2004

Репутация: 8
Всего: 261



Цитата(Viroman @  22.7.2009,  16:15 Найти цитируемый пост)
как сделать так, чтобы скрипт реагировал только тогда, когда в файле новые данные поступили.

Смотрите в область Семафоров и мютексов (этого в пхп нет, придется самому реализовывать).
http://ru2.php.net/manual/en/book.shmop.php
http://ru2.php.net/manual/en/book.sem.php

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

Цитата(Viroman @  22.7.2009,  16:15 Найти цитируемый пост)
и как это сделать не прибегая к обмену через файлы,

В PHP никак, т.к. доступ к другим ресурсам напрямую, как пямять, у PHP закрыт.


Это сообщение отредактировал(а) Mal Hack - 25.7.2009, 14:15
PM ICQ   Вверх
ksnk
Дата 25.7.2009, 14:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: 1
Всего: 386



Viroman, О каких скоростях/реактивностях обмена информацией идет речь? Чем не устраивают простые реализации chat'ов?
Все, что немного посложнее/побыстрее/пореактивнее - требует открытых портов и отдельного гемороя с настройкой соответствующего софта.

Для частной задачи общения специально подобранных юзеров можно написать Java аpplet, ActiveX или еще какую фенечку...


--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
Viroman
Дата 25.7.2009, 23:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 140
Регистрация: 28.7.2008

Репутация: нет
Всего: нет



Ладно, фиг с ним со скоростью, не так страшно, если по байту отдавать на растяжении определённого времени. А вот обмен между скриптами нужно сделать не только для одного юзверя, а доступным для всех, как при случае записи в файл. Конечно можно постоянно чекать дату последнего изменения файла, но не будет ли это слишком накладно, если один и тот же скрипт запущенный тысячью пользователями будет проверять изменение какого либо файла, пусть хоть и не одного файла, а разного, но тем не менее.
PM MAIL   Вверх
Mal Hack
Дата 25.7.2009, 23:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Мудрый...
****


Профиль
Группа: Участник Клуба
Сообщений: 9926
Регистрация: 15.2.2004

Репутация: 8
Всего: 261



Viromanksnk, вы мой пост видели? 
PM ICQ   Вверх
Viroman
Дата 26.7.2009, 00:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 140
Регистрация: 28.7.2008

Репутация: нет
Всего: нет



Mal Hack, спасибо большое, буду разбираться, единственное что пока хотелось бы, это простите за наглость, именно пример такого использования. Я конечно понимаю, если самому велосипед изобретать, но надеялся на пример готовой реализации. Спасибо большое, я буду разбираться.
PM MAIL   Вверх
Mal Hack
Дата 26.7.2009, 01:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Мудрый...
****


Профиль
Группа: Участник Клуба
Сообщений: 9926
Регистрация: 15.2.2004

Репутация: 8
Всего: 261



Примера дать не могу, т.к. сам такую реализацию на PHP не писал.
Глобально, смысл такой. Что юзайте shared memory по аналогии с общим файлом. Тут проблем быть не должно.
Что касается симафоров и мьютексов, то тут надо "вкуривать". Неплохой пример объяснения что это вообще - тут: http://doc.trolltech.com/4.5/threads-semaphores.html, правда не на PHP.
Про мьютексы тамже.
PM ICQ   Вверх
xZ0RGx
Дата 28.7.2009, 05:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 44
Регистрация: 5.6.2009

Репутация: нет
Всего: нет



Скорость надо файрволлом шейпить, а не на PHP. smile

А относительно обмена могу предложить только не лучший вариант с БД.
PM MAIL   Вверх
IZ@TOP
Дата 31.7.2009, 12:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Панда-бир!
****


Профиль
Группа: Участник
Сообщений: 4795
Регистрация: 3.2.2003
Где: Бамбуковый лес

Репутация: 1
Всего: 73



Цитата(Viroman @  25.7.2009,  15:08 Найти цитируемый пост)
Цитата

Купить платный хостинг.

Плохой совет, ещё идеи?


Отличный совет. Решает сразу и второй вопрос.

Цитата(Viroman @  25.7.2009,  15:08 Найти цитируемый пост)
Цитата

 Да. Паузами. 

Но паузами будет ведь не совсем то, или? Какой это контроль за скоростью, если данные будут рывками передаваться, но с полной скоростью. 


Купить платный хостинг. Ограничить скорость на уровне системы. А вообще зависит от способа, которым Вы реализуете "общение" между процессами.

Если у вас там, как говорите, тысячи клиентов онлайн - неужели не будет средств на выделенный сервер? Или Вы очередной халявщик, желающий сэкономить как можно больше копеек?

Как вариант дешевого способа решения задачи (хотя не много не оптимального), могу посоветовать SOAP.


--------------------
Один из розовых плюшевых-всадников апокалипсиса... очень злой...

Семь кругов ада для новых элементов языка
Мои разрозненные мысли
PM MAIL WWW ICQ Skype GTalk   Вверх
nerezus
Дата 31.7.2009, 16:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вселенский отказник
****


Профиль
Группа: Участник
Сообщений: 3330
Регистрация: 15.6.2005

Репутация: нет
Всего: 43



Автор теоретик просто.
Ну не знает, что нельзя 1k видео онлайн на фри хостинге сделать)


--------------------
Сообщество художников Artsociety.ru
PM MAIL WWW   Вверх
Viroman
Дата 3.8.2009, 02:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 140
Регистрация: 28.7.2008

Репутация: нет
Всего: нет



Цитата

Отличный совет. Решает сразу и второй вопрос.

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


Цитата

Автор теоретик просто.
Ну не знает, что нельзя 1k видео онлайн на фри хостинге сделать) 

Оголтелые советы и я умею также бездумно раздавать. Однако мне не факт, был задан вопрос, не было толкового ответа, просто всегда исхожу из того,  что кто то о чём то может знает больше, чем я, а то что не сложилось иначе, реалии жизни однако.  smile 

Цитата

Скорость надо файрволлом шейпить, а не на PHP. smile

А относительно обмена могу предложить только не лучший вариант с БД. 

Не вопрос, чем надо шейпить, а что возможно, надо будет, можно и копытами шейпить, однако не решение. 
Насчёт БД, вот представьте ситуёвину.

Два физических клиента стучатся на внешний php скрипт(находящийся на одном и том же хостинге), стучатся они на неопределённое время, один стучится с намерением аплоадить, то есть посылает на вызванный скрипт нескончаемое количество информации, которая поступает время от времени(рывками, а может залпом, неважно, но постоянно, при этом максимальное время работы скрипта упускаем пока из виду, представим, что оно бесконечно), а другой наоборот, стучится к скрипту с намерением скачать с этого скрипта. Моя задача сконнектить этих двух индивидов так, чтобы у того, который информацию аплоадит, другой эту информацию забирал. По сути unixовые файл сокеты, это то, что нужно, то бишь мне не надо порт открывать(ибо как известно, их количество всё таки ограничено), и по сути можно совершать действия по мере поступления данных, то есть мне по сути не надо постоянно отпрашивать через скрипт, поступили ли новые данные или нет, за меня это сделает система, но загвоздка, даже платные хостинги не всегда любят сокетные соединения разрешать, вот поэтому и спрашивал, а что ещё возможно, может даже через обычные файлы, но с намёком на изменения в файле.
Вот было названо очень умное решение с шарингом памяти, очень заслуживающее внимания идея, только как там реализовать сокетное поведение, чтобы скрипт забирал данные именно по мере их поступления, а не постоянно отпрашивал в цикле, а не поступили ли новые данные? В общем такие вот дела. Да, я знаю, что это мои теории, предположения, как лучше сделать, чтобы не изобретать велосипед по новой, но судя по всему сознание отвечающих ограничено фразами о покупке платного хостинга, толковые мысли тяжело выудить.
PM MAIL   Вверх
youri
Дата 3.8.2009, 04:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 740
Регистрация: 17.4.2004

Репутация: нет
Всего: 16



Viroman, расскажи подробнее про свой скрипт, что за данные передаются? Для чего все это?

Цитата(Viroman @  3.8.2009,  02:09 Найти цитируемый пост)
и по сути можно совершать действия по мере поступления данных

как? Принимающий скрипт запуститься когда закачка завершена. Как внешний скрипт может узнать, имя файла назначения? Это задача из области прогресс бар закачки, которая (насколько я знаю) исключительно средствами php не решается (есть вариант патчить php и еще можно perl-скрипт использовать)
PM   Вверх
IZ@TOP
Дата 3.8.2009, 15:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Панда-бир!
****


Профиль
Группа: Участник
Сообщений: 4795
Регистрация: 3.2.2003
Где: Бамбуковый лес

Репутация: 1
Всего: 73



Viroman, описанная Вами задача сильно напоминает онлайн-вещание. А столь оголтелые ответы Вы получили лишь потому, что реального вопроса толком не задали.
Для решения подобных задач существует множество проектов, однако, как организовать медиа-стриминг без использования сетевых технологий я не представляю.

Цитата(youri @  3.8.2009,  05:38 Найти цитируемый пост)
Принимающий скрипт запуститься когда закачка завершена. Как внешний скрипт может узнать, имя файла назначения? Это задача из области прогресс бар закачки, которая (насколько я знаю) исключительно средствами php не решается (есть вариант патчить php и еще можно perl-скрипт использовать) 

Или использовать модуль Nginx-a  smile 


--------------------
Один из розовых плюшевых-всадников апокалипсиса... очень злой...

Семь кругов ада для новых элементов языка
Мои разрозненные мысли
PM MAIL WWW ICQ Skype GTalk   Вверх
Viroman
Дата 3.8.2009, 16:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 140
Регистрация: 28.7.2008

Репутация: нет
Всего: нет



Цитата

как? Принимающий скрипт запуститься когда закачка завершена. Как внешний скрипт может узнать, имя файла назначения? Это задача из области прогресс бар закачки, которая (насколько я знаю) исключительно средствами php не решается (есть вариант патчить php и еще можно perl-скрипт использовать)

1. Нет, принимающий скрипт запускается без ожидания, в этом то и фишка заключается.
2. Это не проблема, свой менеджер сессий это решит.
3. Прогресс бар мне за даром не нужен smile


Цитата

Viroman, описанная Вами задача сильно напоминает онлайн-вещание. А столь оголтелые ответы Вы получили лишь потому, что реального вопроса толком не задали.
Для решения подобных задач существует множество проектов, однако, как организовать медиа-стриминг без использования сетевых технологий я не представляю.

Я задал вопрос в корень, отмёл уже существующие возможности и прибавил свойство существующего окружения, в какой то мере это может на стриминг похоже, но это мне дефакто не нужно, мне всего лишь хотелось знать, можно ли между двумя запущенными скриптами на сервере без сокетов обмениваться информацией в реальном времени так, чтобы один скрипт забирал данные по мере их поступения, и всё. Конечно, я бы мог сделать так для худшего случая, например, один скрипт получает данные, предположим по килобайту и пишет их в файл, например, получил 1кб, записал в файл, ждёт, пока другой заберёт, другой смотрит последнюю дату изменения с последнего отпроса, если видит, что что то изменилось, считывает и обнуляет, и такая игра по новой. Естественно, я должен буду для такого случая в цикле отпрашивать состояния файлов, как же иначе. И вот этого мне хотелось бы избежать. Понимаю, что говорите, что никто не знает, ну раз нет, то нет, тогда тему можно закрывать. Любые другие склоки на тему, что типа не так вопрос задал, не так мы поняли, меня честно, не волнует, раз с первого раза до кого то не дошло, значит просто тот с этой проблемой не сталкивался, тогда и отвечать не стоит.
PM MAIL   Вверх
youri
Дата 3.8.2009, 17:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 740
Регистрация: 17.4.2004

Репутация: нет
Всего: 16



Цитата(Viroman @  3.8.2009,  16:53 Найти цитируемый пост)
1. Нет, принимающий скрипт запускается без ожидания, в этом то и фишка заключается.

принимающий скрипт не может по умолчанию запуститься без ожидания. Но тебе привели три варианта решения этой проблемы, а ты, возможно, придумал четвертое

Цитата(Viroman @  3.8.2009,  16:53 Найти цитируемый пост)
Конечно, я бы мог сделать так для худшего случая, например, один скрипт получает данные, предположим по килобайту и пишет их в файл, например, получил 1кб, записал в файл, ждёт, пока другой заберёт, другой смотрит последнюю дату изменения с последнего отпроса, если видит, что что то изменилось, считывает и обнуляет, и такая игра по новой. Естественно, я должен буду для такого случая в цикле отпрашивать состояния файлов, как же иначе. И вот этого мне хотелось бы избежать

напиши функцию read, которая будет это делать. А потом забудь про ее реализацию. Как ты этого избежать хочешь. При передаче через сокеты ожиданий нету что ли?

p.s. мы так и будем решать сферическую проблему в вакууме или ты расскажешь все-таки, что ты делаешь?
PM   Вверх
IZ@TOP
Дата 3.8.2009, 18:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Панда-бир!
****


Профиль
Группа: Участник
Сообщений: 4795
Регистрация: 3.2.2003
Где: Бамбуковый лес

Репутация: 1
Всего: 73



Viroman, я полагаю, основная проблема при реализации данной задачи - состояние ожидания данных. Решить этот вопрос использованием функции sleep выглядит неподобающим образом, а другого способа, честно говоря, я не вижу/не знаю.

Цитата(Viroman @  3.8.2009,  17:53 Найти цитируемый пост)
можно ли между двумя запущенными скриптами на сервере без сокетов обмениваться информацией в реальном времени так, чтобы один скрипт забирал данные по мере их поступения

Думаю, это основная проблема, которую стандартными средствами PHP не решить.

И все же, можно не совсем скромный вопрос? 
Неужели 150 рублей в месяц (за хостинг с socket on), такая нереальная сумма?


--------------------
Один из розовых плюшевых-всадников апокалипсиса... очень злой...

Семь кругов ада для новых элементов языка
Мои разрозненные мысли
PM MAIL WWW ICQ Skype GTalk   Вверх
WIPS
Дата 5.8.2009, 21:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 199
Регистрация: 22.5.2006
Где: Украина, Киев

Репутация: нет
Всего: 8



Тоже может быть не разрешено на хостинге, но можно еще посмотреть в сторону кешеров, кот. работают с памятью - APC/XCache. Такой себе аналог shared memory.
--------------------
Автопроизводители, машины, марки, модели!
PM MAIL WWW ICQ Skype   Вверх
nerezus
Дата 5.8.2009, 22:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вселенский отказник
****


Профиль
Группа: Участник
Сообщений: 3330
Регистрация: 15.6.2005

Репутация: нет
Всего: 43



Цитата

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

Или так низко ценим свой труд, что за разницу в 150р готовы писать куеву хучу кода?


--------------------
Сообщество художников Artsociety.ru
PM MAIL WWW   Вверх
gcc
Дата 5.8.2009, 23:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Агент алкомафии
****


Профиль
Группа: Участник
Сообщений: 2691
Регистрация: 25.4.2008
Где: %&й

Репутация: нет
Всего: 17



если я правильно понял, то тут можно придумать:

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

UPDATE::bla::3434534345
INSERT::bla2::234234234
или в XML

чтобы 2 скрипта скачивали через 2-4 сек файлы друг у друга (смотря что они делают) и смотреть что передается, дальше думаю понятно... как обычные сокеты... на низкоуровневом программировании прейдется поработать  smile 

Это сообщение отредактировал(а) gcc - 5.8.2009, 23:25
PM WWW ICQ Skype GTalk Jabber   Вверх
Страницы: (2) [Все] 1 2 
Ответ в темуСоздание новой темы Создание опроса

Внимание: данный раздел предназначен для решения сложных, нестандартных задач.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Для профи | Следующая тема »


 




[ Время генерации скрипта: 0.1142 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.