Тестировалось на Ubuntu 10.10.
1. Загружаем последнюю версию phpDaemon из https://github.com/kakserpom/phpdaemon и распаковываем в удобную для вас директорию. Я распаковывал в /var/www/phpdaemon.
2. Устанавливаем PEAR.
sudo apt-get install php-pear
3. Устанавливаем php5 и php5-dev для компилирования расширений php из pecl.
sudo apt-get install php5 php5-dev
4. Устанавливаем libevent.
pecl install libevent
Если ругнётся и выведет урл channel://..., то устанавливаем из канала:
pecl install channel://...
5. Устанавливаем proctitle.
pecl install proctitle
6. Прописываем расширения в /etc/php5/cli/php.ini
extension=libevent.so
extension=proctitle.so
7. Привязываем демона к команде phpd.
sudo ln -s /var/www/phpdaemon/bin/phpdaemon /usr/bin/phpd
8. Настраиваем /etc/phpd/phpd.conf
log-errors 1;
path /var/www/phpdaemon/conf/AppResolver.php;
WebSocketServer {
privileged;
}
HTTP {
listenport 8080;
path /var/www/phpdaemon/app-servers/HTTP.php;
privileged;
}
ExampleWebSocket {
enable 1;
path /var/www/phpdaemon/app-examples/ExampleWebSocket.php;
listenport 8047;
user www;
group www;
}
WebSocketOverCOMET {
enable 1;
}
FlashPolicy {
enable 1;
path /var/www/phpdaemon/app-servers/FlashPolicy.php;
}
9. Запускаем демона sudo phpd start.
При удачном запуске он должен вернуть что-то вроде:
[PHPD] M#6413 IPCManager instantiated.
[PHPD] M#6413 WebSocketServer instantiated.
[PHPD] M#6413 WebSocketServer up.
[PHPD] W#6419 HTTP instantiated.
[PHPD] W#6419 HTTP up.
[PHPD] W#6419 ExampleWebSocket instantiated.
[PHPD] W#6419 ExampleWebSocket up.
[PHPD] W#6417 HTTP instantiated.
[PHPD] W#6417 HTTP up.
[PHPD] W#6418 HTTP instantiated.
[PHPD] HTTP: Couldn't bind TCP-socket '0.0.0.0:8080' (98 - Address already in use).
[PHPD] W#6418 HTTP up.
[PHPD] W#6417 ExampleWebSocket instantiated.
[PHPD] W#6417 ExampleWebSocket up.
[PHPD] W#6419 WebSocketOverCOMET instantiated.
[PHPD] W#6419 WebSocketOverCOMET up.
...
10. Правим /var/www/phpdaemon/clientside-connectors/websocket/index.html
ws: 'ws://' + document.domain + ':8047/exampleApp'
comet: 'http://' + document.domain + ':8080/WebSocketOverCOMET/?_route=exampleApp'
polling: 'http://' + document.domain + ':8080/WebSocketOverCOMET/?_route=exampleApp'
11. Запускаем /var/www/phpdaemon/clientside-connectors/websocket/index.html в браузерах и наслаждаемся WebSockets. В Firefox 3 заработал только флэш эмулятор. Iframe-эмулятор выдавал ошибку "WebSocket not found" и отказывался работать. =(
1. Загружаем последнюю версию phpDaemon из https://github.com/kakserpom/phpdaemon и распаковываем в удобную для вас директорию. Я распаковывал в /var/www/phpdaemon.
2. Устанавливаем PEAR.
sudo apt-get install php-pear
3. Устанавливаем php5 и php5-dev для компилирования расширений php из pecl.
sudo apt-get install php5 php5-dev
4. Устанавливаем libevent.
pecl install libevent
Если ругнётся и выведет урл channel://..., то устанавливаем из канала:
pecl install channel://...
5. Устанавливаем proctitle.
pecl install proctitle
6. Прописываем расширения в /etc/php5/cli/php.ini
extension=libevent.so
extension=proctitle.so
7. Привязываем демона к команде phpd.
sudo ln -s /var/www/phpdaemon/bin/phpdaemon /usr/bin/phpd
8. Настраиваем /etc/phpd/phpd.conf
log-errors 1;
path /var/www/phpdaemon/conf/AppResolver.php;
WebSocketServer {
privileged;
}
HTTP {
listenport 8080;
path /var/www/phpdaemon/app-servers/HTTP.php;
privileged;
}
ExampleWebSocket {
enable 1;
path /var/www/phpdaemon/app-examples/ExampleWebSocket.php;
listenport 8047;
user www;
group www;
}
WebSocketOverCOMET {
enable 1;
}
FlashPolicy {
enable 1;
path /var/www/phpdaemon/app-servers/FlashPolicy.php;
}
9. Запускаем демона sudo phpd start.
При удачном запуске он должен вернуть что-то вроде:
[PHPD] M#6413 IPCManager instantiated.
[PHPD] M#6413 WebSocketServer instantiated.
[PHPD] M#6413 WebSocketServer up.
[PHPD] W#6419 HTTP instantiated.
[PHPD] W#6419 HTTP up.
[PHPD] W#6419 ExampleWebSocket instantiated.
[PHPD] W#6419 ExampleWebSocket up.
[PHPD] W#6417 HTTP instantiated.
[PHPD] W#6417 HTTP up.
[PHPD] W#6418 HTTP instantiated.
[PHPD] HTTP: Couldn't bind TCP-socket '0.0.0.0:8080' (98 - Address already in use).
[PHPD] W#6418 HTTP up.
[PHPD] W#6417 ExampleWebSocket instantiated.
[PHPD] W#6417 ExampleWebSocket up.
[PHPD] W#6419 WebSocketOverCOMET instantiated.
[PHPD] W#6419 WebSocketOverCOMET up.
...
10. Правим /var/www/phpdaemon/clientside-connectors/websocket/index.html
ws: 'ws://' + document.domain + ':8047/exampleApp'
comet: 'http://' + document.domain + ':8080/WebSocketOverCOMET/?_route=exampleApp'
polling: 'http://' + document.domain + ':8080/WebSocketOverCOMET/?_route=exampleApp'
11. Запускаем /var/www/phpdaemon/clientside-connectors/websocket/index.html в браузерах и наслаждаемся WebSockets. В Firefox 3 заработал только флэш эмулятор. Iframe-эмулятор выдавал ошибку "WebSocket not found" и отказывался работать. =(