Возможно ли иметь одноранговое общение, используя только PHP - PullRequest
0 голосов
/ 14 июля 2009

Возможно ли реализовать p2p, используя только PHP? Без Flash или Java и, очевидно, без установки какого-либо агента / клиента на свой компьютер.

так что, хотя это может быть и не «истинный» p2p, но он использует сервер для установления какого-либо соединения, но остальная часть связи должна выполняться с использованием p2p

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

Ответы [ 7 ]

2 голосов
/ 14 июля 2009

номер

Вы можете написать P2P клиент / сервер на PHP & mdash; но он должен быть установлен на участвующих компьютерах.

Вы не можете запустить PHP на веб-сервере, так как два других компьютера могут взаимодействовать друг с другом без установки программного обеспечения P2P.

Вы даже не можете использовать JavaScript, чтобы помочь & mdash; та же политика происхождения помешает этому.

JavaScript с запущенным браузером может использовать сервер на основе PHP в качестве посредника, чтобы два клиента могли общаться & mdash; но вы не достигнете P2P.

1 голос
/ 28 августа 2013

Это не теоретически, потому что серверное приложение (PHP) не имеет доступа к одноранговой системе, который необходим для определения портов, IP-адресов и т. Д. Для установления соединения с сокетом.

Сложение:

Но если вы будете использовать PHP на веб-серверах каждого партнера, это может дать вам то, что вы ищете.

1 голос
/ 14 июля 2009

без установки какого-либо агент / клиент на своем компьютере

На каждом компьютере должны быть установлены двоичные файлы PHP.

EDIT

Я вижу в другом сообщении, которое вы упомянули на основе браузера. Ограничения безопасности в javascript запрещают этот тип взаимодействия

0 голосов
/ 10 июня 2011

Да, но это не то, что обычно называется p2p, так как между ними есть сервер. Однако у меня есть ощущение, что вы хотите, чтобы ваши коллеги общались друг с другом, а не имели прямую связь между ними без посреднического сервера (что обычно подразумевается под p2p)

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

0 голосов
/ 14 июля 2009

Нет, не совсем. Сценарии PHP предназначены для запуска только в течение очень небольшого количества времени. Обычно максимальное время выполнения по умолчанию составляет две минуты, что обычно недостаточно для p2p-связи. После этого скрипт будет отменен, хотя администратор сервера может деактивировать это. Но даже тогда все время загрузки http-соединение между сервером и клиентом должно сохраняться. Браузер клиента покажет индикатор загрузки страницы. Если соединение разрывается, большинство веб-серверов убивают скрипт php, поэтому загрузка p2p отменяется.

Так что может быть возможно реализовать протокол p2p, но в сценарии клиент / сервер вы столкнетесь с проблемами с моделью выполнения сценариев php.

0 голосов
/ 14 июля 2009

Зависит от того, хотите ли вы, чтобы браузер отправлял данные в это приложение PHP.

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

То, что вы не можете сделать, это заставить браузер поддерживать двустороннее соединение, не прерывая запросы (пока не все же ...)

0 голосов
/ 14 июля 2009

Разве одноранговая связь не подразумевает, что связь идет напрямую от одного клиента к другому, без каких-либо серверов в середине? Поскольку PHP является серверным программным обеспечением, я не думаю, что любая программа, на которой вы пишете, может считаться истинной p2p.

Однако, если вы хотите разрешить клиент-клиентские коммуникации с php-сервером в качестве посредника, это определенно возможно.

...