狠狠撸

狠狠撸Share a Scribd company logo
PHP meets NodeJS
PHPに簡単にPUSH機能を組み込む
13年8月4日日曜日
まずは自己紹介
簡単に自己紹介
Name : takyam (たくやむ)
Work : WEBアプリケーションエンジニア?
Twitter : @takyam
Blog : http://new.takyam.com/
GitHub : http://github.com/takyam-git
Bitbucket : https://bitbucket.org/takyam
13年8月4日日曜日
PHPで通知機能
PHPでFacebookの通知機能のようなものを実装したい事ありますよね?
画面遷移を挟まずにユーザーへの通知が表示される機能です。
私はPUSH通知と呼んでるのですがこれをPHPで作りたいとおもいます
13年8月4日日曜日
通知機能を作るには
サーバー側からPUSHする必要がありますが、いくつかの手法があります
ポーリング(実際はPUSHでは無い)
Commet
Websocket
それぞれメリット?デメリットがあります
今回はWebsocketを使ってみたいと思います
13年8月4日日曜日
Websocketを使う
PHP単体でもWebsocketを扱えるようなライブラリはあります
とはいえWAFに組み込むのは難しいので今回はNodeJSを使います
Websocketの部分はNodeJSに全ておまかせです!
13年8月4日日曜日
NodeJS分かんねぇよ
そんな硬派なPHPerも大丈夫!
NodeJSは全部で100行くらいなので、コピペすりゃOK
一度作ればNodeJSメンテナンス不要なイケてるシステムです
13年8月4日日曜日
今回のシステムの前提
今回のPUSHを実現するための前提条件が2つあります
NodeJSがPHPと同ドメイン(ポート違いOK)で運用できる
Redisが使える
これだけ!
13年8月4日日曜日
まずはイメージをつかむ
文字で説明するのも大変なので簡単なイメージ図をご紹介
まず最終的な完成形のイメージを掴んでください
13年8月4日日曜日
最終的な構成
HTTP POST
Redis PUBLISH
Redis SUBSCRIBE
Websocket Connections
13年8月4日日曜日
最終的な構成
HTTP POST
Redis PUBLISH
Redis SUBSCRIBE
Websocket Connections
投稿に対してのコメントを
AjaxでPHPにPOSTリクエスト
13年8月4日日曜日
最終的な構成
HTTP POST
Redis PUBLISH
Redis SUBSCRIBE
Websocket Connections
コメントのDBへの保存処理などを実施
13年8月4日日曜日
最終的な構成
HTTP POST
Redis PUBLISH
Redis SUBSCRIBE
Websocket Connections
コメントが来たよ通知JSONを
RedisにPUBLISH
13年8月4日日曜日
最終的な構成
HTTP POST
Redis PUBLISH
Redis SUBSCRIBE
Websocket Connections
SUBSCRIBEしてるNodeJSが
通知JSONを受信
13年8月4日日曜日
最終的な構成
HTTP POST
Redis PUBLISH
Redis SUBSCRIBE
Websocket Connections
通知JSONから通知対象のユーザーを選択する
13年8月4日日曜日
最終的な構成
HTTP POST
Redis PUBLISH
Redis SUBSCRIBE
Websocket Connections
通知対象のユーザーのWebsocketを使って
PUSH通知(JSON)を送信!
13年8月4日日曜日
最終的な構成
HTTP POST
Redis PUBLISH
Redis SUBSCRIBE
Websocket Connections
受け取ったPUSH通知JSONを元に
画面の表示を更新
13年8月4日日曜日
どうですか?
そんなに複雑な構成では無いとおもいます
ポイントは以下の3つ
ユーザーからのデータ送信はAjaxので処理する
Redis経由でPHPがNodeJSに、一方通行でJSONを送る
NodeはPHPからのJSONを元にWebsocketでデータを送信する
13年8月4日日曜日
なんでAjax?
コレ以上Nodeに複雑な処理持たせたくないから
PHP側だけで処理できる事はPHPだけでやった方が楽ですよね
13年8月4日日曜日
Redisのpub/sub?
これもNode側の実装が楽だから
HTTPリクエスト処理するための何やかんや用意しなくてOK
JSONかわいいよJSON
13年8月4日日曜日
Nodeが送信?
Nodeは決まったフォーマットのJSONに従ってJSONを配信するだけ
つまり、かなり定型的な処理しか行わない
つまり、Nodeの実装が楽っ☆
13年8月4日日曜日
つまり
いかにNodeを触らなくて良いかを考えた構成になってます
Node大好きっ子ですが、メインがPHPなので複雑にしたくなかったのです
13年8月4日日曜日
PHP/Node間のJSON
target_user_ids のWebsocketに対して data を送るだけですね
{
“target_user_ids”: [1,2,10,22],
“data”: {
“type”: “notice_message”,
“message”: “コメントがありました”,
“datetime”: “2013-08-03 15:12:32”
}
}
←配信対象のユーザーIDリスト
←配信データ
}
13年8月4日日曜日
target_user_ids ???
ユーザーIDはPHP側にしか持ってません
NodeJS側は会員認証も何も持ってないのだから
ユーザーID渡されてもどのWebsocketがどのユーザーIDか分からなくね?
13年8月4日日曜日
ユーザーIDをNodeと共有
というわけで、ここが肝なのですが、ユーザーIDをNode側に知らせる必要があります
方法は簡単、ユーザーIDを返すAPIをPHP側に用意するだけ!
ではイメージ図いってみましょう
13年8月4日日曜日
ユーザーID取得処理
13年8月4日日曜日
ユーザーID取得処理
1.ページを開く(GETリクエスト)
13年8月4日日曜日
ユーザーID取得処理
1.ページを開く(GETリクエスト)
2. HTML/JSを返す
13年8月4日日曜日
ユーザーID取得処理
1.ページを開く(GETリクエスト)
3. Websocketを繋ぐ(リクエスト)
2. HTML/JSを返す
13年8月4日日曜日
ユーザーID取得処理
1.ページを開く(GETリクエスト)
3. Websocketを繋ぐ(リクエスト)
2. HTML/JSを返す
Session Cookie
SessionCookieが同時に送られる
13年8月4日日曜日
ユーザーID取得処理
1.ページを開く(GETリクエスト)
3. Websocketを繋ぐ(リクエスト)
2. HTML/JSを返す
Session Cookie
SessionCookieが同時に送られる
4. Websocket接続確立
13年8月4日日曜日
ユーザーID取得処理
1.ページを開く(GETリクエスト)
3. Websocketを繋ぐ(リクエスト)
2. HTML/JSを返す
Session Cookie
SessionCookieが同時に送られる
5.NodeからPHPにHTTPリクエスト
4. Websocket接続確立
13年8月4日日曜日
ユーザーID取得処理
1.ページを開く(GETリクエスト)
3. Websocketを繋ぐ(リクエスト)
2. HTML/JSを返す
Session Cookie
SessionCookieが同時に送られる
5.NodeからPHPにHTTPリクエスト
Session Cookie
受け取ったSession
Cookieを添えて
4. Websocket接続確立
13年8月4日日曜日
ユーザーID取得処理
1.ページを開く(GETリクエスト)
3. Websocketを繋ぐ(リクエスト)
2. HTML/JSを返す
Session Cookie
SessionCookieが同時に送られる
5.NodeからPHPにHTTPリクエスト
Session Cookie
受け取ったSession
Cookieを添えて
6.ユーザーIDを返す4. Websocket接続確立
13年8月4日日曜日
ユーザーID取得処理
1.ページを開く(GETリクエスト)
3. Websocketを繋ぐ(リクエスト)
2. HTML/JSを返す
Session Cookie
SessionCookieが同時に送られる
5.NodeからPHPにHTTPリクエスト
Session Cookie
受け取ったSession
Cookieを添えて
6.ユーザーIDを返す4. Websocket接続確立
7.Websocketと
ユーザーIDを紐付ける
13年8月4日日曜日
ポイントは
1.ページを開く(GETリクエスト)
3. Websocketを繋ぐ(リクエスト)
2. HTML/JSを返す
Session Cookie
SessionCookieが同時に送られる
5.NodeからPHPにHTTPリクエスト
Session Cookie
受け取ったSession
Cookieを添えて
6.ユーザーIDを返す4. Websocket接続確立
7.Websocketと
ユーザーIDを紐付ける
13年8月4日日曜日
ポイントは
1.ページを開く(GETリクエスト)
3. Websocketを繋ぐ(リクエスト)
2. HTML/JSを返す
Session Cookie
SessionCookieが同時に送られる
5.NodeからPHPにHTTPリクエスト
Session Cookie
受け取ったSession
Cookieを添えて
6.ユーザーIDを返す4. Websocket接続確立
7.Websocketと
ユーザーIDを紐付ける
Websocketコネクション時の
Handshakeの時に
PHP側のSessionCookieが送られる
13年8月4日日曜日
ポイントは
1.ページを開く(GETリクエスト)
3. Websocketを繋ぐ(リクエスト)
2. HTML/JSを返す
Session Cookie
SessionCookieが同時に送られる
5.NodeからPHPにHTTPリクエスト
Session Cookie
受け取ったSession
Cookieを添えて
6.ユーザーIDを返す4. Websocket接続確立
7.Websocketと
ユーザーIDを紐付ける
SessionCookieを含めてPHPにリクエスト
つまり、PHP的にはユーザーからのリクエストと一緒
13年8月4日日曜日
Nodeがユーザーになりきれる
Node側がユーザーを偽装する事ができますね!
PHP側がリクエストユーザーの、ユーザーIDを返すAPIを用意すればOK
これで、WebsocketにPHP側のユーザーIDを紐付ける事ができます
13年8月4日日曜日
ユーザーID偽装のために
PHP側のSessionCookieをNode側に送信する必要があります
Cookieの送信ポリシー的に同じドメインである必要があります
なので、ポートは違っていいですが、NodeもPHPも同ドメインで運用してください
13年8月4日日曜日
というわけで
省エネでPHPからPUSH通知を送る事ができます
例としてPHPあげましたが、PerlでもRubyでも同じ事はできるはずです
13年8月4日日曜日
最後に
この資料作るきっかけになった投稿をくれた方々に感謝です
https://groups.google.com/forum/#!topic/nodejs_jp/gU2347-33PQ
簡単なサンプル(通知ではなくてチャットですが)も作りましたのでよろしければ
https://github.com/takyam-git/phpchat_example/
13年8月4日日曜日
ありがとうございました
ご連絡は @takyam までぜひぜひ~
ブログも見てね~
http://new.takyam.com/
13年8月4日日曜日

More Related Content

What's hot (20)

エンシ?ニアから飞んて?くるマサカリを受け止める心得
エンシ?ニアから飞んて?くるマサカリを受け止める心得エンシ?ニアから飞んて?くるマサカリを受け止める心得
エンシ?ニアから飞んて?くるマサカリを受け止める心得
Reimi Kuramochi Chiba
?
Cloud Spanner をより便利にする運用支援ツールの紹介
Cloud Spanner をより便利にする運用支援ツールの紹介Cloud Spanner をより便利にする運用支援ツールの紹介
Cloud Spanner をより便利にする運用支援ツールの紹介
gree_tech
?
REST API に疲れたあなたへ贈る GraphQL 入門
REST API に疲れたあなたへ贈る GraphQL 入門REST API に疲れたあなたへ贈る GraphQL 入門
REST API に疲れたあなたへ贈る GraphQL 入門
Keisuke Tsukagoshi
?
今こそ知りたいSpring Web(Spring Fest 2020講演資料)
今こそ知りたいSpring Web(Spring Fest 2020講演資料)今こそ知りたいSpring Web(Spring Fest 2020講演資料)
今こそ知りたいSpring Web(Spring Fest 2020講演資料)
NTT DATA Technology & Innovation
?
20191220 「アウトプットしないのは知的な便秘」の影響力
20191220  「アウトプットしないのは知的な便秘」の影響力20191220  「アウトプットしないのは知的な便秘」の影響力
20191220 「アウトプットしないのは知的な便秘」の影響力
Typhon 666
?
顿别狈础の大规模ライブ配信基盘を支える技术
顿别狈础の大规模ライブ配信基盘を支える技术顿别狈础の大规模ライブ配信基盘を支える技术
顿别狈础の大规模ライブ配信基盘を支える技术
DeNA
?
ΤΕΧΝΟΛΟΓΙΑ..辫辫迟虫
ΤΕΧΝΟΛΟΓΙΑ..辫辫迟虫ΤΕΧΝΟΛΟΓΙΑ..辫辫迟虫
ΤΕΧΝΟΛΟΓΙΑ..辫辫迟虫
Κατσαρ? Χαριτωμ?νη
?
Cidadania modernaCidadania moderna
Cidadania moderna
Maira Conde
?
「実践的」カスタマージャーニー分析のすすめ
「実践的」カスタマージャーニー分析のすすめ「実践的」カスタマージャーニー分析のすすめ
「実践的」カスタマージャーニー分析のすすめ
Akihiko Uchino
?
Project Facilitation From Hiranabe
Project Facilitation From HiranabeProject Facilitation From Hiranabe
Project Facilitation From Hiranabe
Yasui Tsutomu
?
Τα Μυστ?ρια
Τα Μυστ?ριαΤα Μυστ?ρια
Τα Μυστ?ρια
konkarrag
?
Β ΓΥΜΝΑΣΙΟΥ ΘΕΜΑΤΙΚΗ 1.3 Ο ΚΙΝΔΥΝΟΣ ΤΩΝ ΕΙΔΩΛΩΝ
Β ΓΥΜΝΑΣΙΟΥ ΘΕΜΑΤΙΚΗ 1.3 Ο ΚΙΝΔΥΝΟΣ ΤΩΝ ΕΙΔΩΛΩΝΒ ΓΥΜΝΑΣΙΟΥ ΘΕΜΑΤΙΚΗ 1.3 Ο ΚΙΝΔΥΝΟΣ ΤΩΝ ΕΙΔΩΛΩΝ
Β ΓΥΜΝΑΣΙΟΥ ΘΕΜΑΤΙΚΗ 1.3 Ο ΚΙΝΔΥΝΟΣ ΤΩΝ ΕΙΔΩΛΩΝ
Ελενη Ζαχου
?
搁贰础尝滨罢驰低遅延モード配信を支えるリアルタイムサーバとデータパイプライン
搁贰础尝滨罢驰低遅延モード配信を支えるリアルタイムサーバとデータパイプライン搁贰础尝滨罢驰低遅延モード配信を支えるリアルタイムサーバとデータパイプライン
搁贰础尝滨罢驰低遅延モード配信を支えるリアルタイムサーバとデータパイプライン
gree_tech
?
DRIVE CHARTの裏側 ? AI ? IoT ? ビッグデータを 支えるアーキテクチャ ?
DRIVE CHARTの裏側  ? AI ? IoT ? ビッグデータを 支えるアーキテクチャ ?DRIVE CHARTの裏側  ? AI ? IoT ? ビッグデータを 支えるアーキテクチャ ?
DRIVE CHARTの裏側 ? AI ? IoT ? ビッグデータを 支えるアーキテクチャ ?
DeNA
?
NuxtJS + SSRで作ったGREE Tech Conference 2020
NuxtJS + SSRで作ったGREE Tech Conference 2020NuxtJS + SSRで作ったGREE Tech Conference 2020
NuxtJS + SSRで作ったGREE Tech Conference 2020
gree_tech
?
闯补惫补の进化にともなう运用性の向上はシステム设计にどういう変化をもたらすのか
闯补惫补の进化にともなう运用性の向上はシステム设计にどういう変化をもたらすのか闯补惫补の进化にともなう运用性の向上はシステム设计にどういう変化をもたらすのか
闯补惫补の进化にともなう运用性の向上はシステム设计にどういう変化をもたらすのか
Yoshitaka Kawashima
?
Azure AD とアプリケーションを SAML 連携する際に陥る事例と対処方法について
Azure AD とアプリケーションを SAML 連携する際に陥る事例と対処方法についてAzure AD とアプリケーションを SAML 連携する際に陥る事例と対処方法について
Azure AD とアプリケーションを SAML 連携する際に陥る事例と対処方法について
Shinya Yamaguchi
?
SourceTreeで始めよう! Gitへの乗り換え指南
SourceTreeで始めよう! Gitへの乗り換え指南SourceTreeで始めよう! Gitへの乗り換え指南
SourceTreeで始めよう! Gitへの乗り換え指南
Kouji Matsui
?
【厂厂厂】提案书サンプル
【厂厂厂】提案书サンプル【厂厂厂】提案书サンプル
【厂厂厂】提案书サンプル
sss-share
?
颁丑谤辞尘别でストレージ永続化を実现するには
颁丑谤辞尘别でストレージ永続化を実现するには颁丑谤辞尘别でストレージ永続化を実现するには
颁丑谤辞尘别でストレージ永続化を実现するには
goccy
?
エンシ?ニアから飞んて?くるマサカリを受け止める心得
エンシ?ニアから飞んて?くるマサカリを受け止める心得エンシ?ニアから飞んて?くるマサカリを受け止める心得
エンシ?ニアから飞んて?くるマサカリを受け止める心得
Reimi Kuramochi Chiba
?
Cloud Spanner をより便利にする運用支援ツールの紹介
Cloud Spanner をより便利にする運用支援ツールの紹介Cloud Spanner をより便利にする運用支援ツールの紹介
Cloud Spanner をより便利にする運用支援ツールの紹介
gree_tech
?
REST API に疲れたあなたへ贈る GraphQL 入門
REST API に疲れたあなたへ贈る GraphQL 入門REST API に疲れたあなたへ贈る GraphQL 入門
REST API に疲れたあなたへ贈る GraphQL 入門
Keisuke Tsukagoshi
?
今こそ知りたいSpring Web(Spring Fest 2020講演資料)
今こそ知りたいSpring Web(Spring Fest 2020講演資料)今こそ知りたいSpring Web(Spring Fest 2020講演資料)
今こそ知りたいSpring Web(Spring Fest 2020講演資料)
NTT DATA Technology & Innovation
?
20191220 「アウトプットしないのは知的な便秘」の影響力
20191220  「アウトプットしないのは知的な便秘」の影響力20191220  「アウトプットしないのは知的な便秘」の影響力
20191220 「アウトプットしないのは知的な便秘」の影響力
Typhon 666
?
顿别狈础の大规模ライブ配信基盘を支える技术
顿别狈础の大规模ライブ配信基盘を支える技术顿别狈础の大规模ライブ配信基盘を支える技术
顿别狈础の大规模ライブ配信基盘を支える技术
DeNA
?
Cidadania modernaCidadania moderna
Cidadania moderna
Maira Conde
?
「実践的」カスタマージャーニー分析のすすめ
「実践的」カスタマージャーニー分析のすすめ「実践的」カスタマージャーニー分析のすすめ
「実践的」カスタマージャーニー分析のすすめ
Akihiko Uchino
?
Project Facilitation From Hiranabe
Project Facilitation From HiranabeProject Facilitation From Hiranabe
Project Facilitation From Hiranabe
Yasui Tsutomu
?
Τα Μυστ?ρια
Τα Μυστ?ριαΤα Μυστ?ρια
Τα Μυστ?ρια
konkarrag
?
Β ΓΥΜΝΑΣΙΟΥ ΘΕΜΑΤΙΚΗ 1.3 Ο ΚΙΝΔΥΝΟΣ ΤΩΝ ΕΙΔΩΛΩΝ
Β ΓΥΜΝΑΣΙΟΥ ΘΕΜΑΤΙΚΗ 1.3 Ο ΚΙΝΔΥΝΟΣ ΤΩΝ ΕΙΔΩΛΩΝΒ ΓΥΜΝΑΣΙΟΥ ΘΕΜΑΤΙΚΗ 1.3 Ο ΚΙΝΔΥΝΟΣ ΤΩΝ ΕΙΔΩΛΩΝ
Β ΓΥΜΝΑΣΙΟΥ ΘΕΜΑΤΙΚΗ 1.3 Ο ΚΙΝΔΥΝΟΣ ΤΩΝ ΕΙΔΩΛΩΝ
Ελενη Ζαχου
?
搁贰础尝滨罢驰低遅延モード配信を支えるリアルタイムサーバとデータパイプライン
搁贰础尝滨罢驰低遅延モード配信を支えるリアルタイムサーバとデータパイプライン搁贰础尝滨罢驰低遅延モード配信を支えるリアルタイムサーバとデータパイプライン
搁贰础尝滨罢驰低遅延モード配信を支えるリアルタイムサーバとデータパイプライン
gree_tech
?
DRIVE CHARTの裏側 ? AI ? IoT ? ビッグデータを 支えるアーキテクチャ ?
DRIVE CHARTの裏側  ? AI ? IoT ? ビッグデータを 支えるアーキテクチャ ?DRIVE CHARTの裏側  ? AI ? IoT ? ビッグデータを 支えるアーキテクチャ ?
DRIVE CHARTの裏側 ? AI ? IoT ? ビッグデータを 支えるアーキテクチャ ?
DeNA
?
NuxtJS + SSRで作ったGREE Tech Conference 2020
NuxtJS + SSRで作ったGREE Tech Conference 2020NuxtJS + SSRで作ったGREE Tech Conference 2020
NuxtJS + SSRで作ったGREE Tech Conference 2020
gree_tech
?
闯补惫补の进化にともなう运用性の向上はシステム设计にどういう変化をもたらすのか
闯补惫补の进化にともなう运用性の向上はシステム设计にどういう変化をもたらすのか闯补惫补の进化にともなう运用性の向上はシステム设计にどういう変化をもたらすのか
闯补惫补の进化にともなう运用性の向上はシステム设计にどういう変化をもたらすのか
Yoshitaka Kawashima
?
Azure AD とアプリケーションを SAML 連携する際に陥る事例と対処方法について
Azure AD とアプリケーションを SAML 連携する際に陥る事例と対処方法についてAzure AD とアプリケーションを SAML 連携する際に陥る事例と対処方法について
Azure AD とアプリケーションを SAML 連携する際に陥る事例と対処方法について
Shinya Yamaguchi
?
SourceTreeで始めよう! Gitへの乗り換え指南
SourceTreeで始めよう! Gitへの乗り換え指南SourceTreeで始めよう! Gitへの乗り換え指南
SourceTreeで始めよう! Gitへの乗り換え指南
Kouji Matsui
?
【厂厂厂】提案书サンプル
【厂厂厂】提案书サンプル【厂厂厂】提案书サンプル
【厂厂厂】提案书サンプル
sss-share
?
颁丑谤辞尘别でストレージ永続化を実现するには
颁丑谤辞尘别でストレージ永続化を実现するには颁丑谤辞尘别でストレージ永続化を実现するには
颁丑谤辞尘别でストレージ永続化を実现するには
goccy
?

Viewers also liked (20)

PHP + Node.jsPHP + Node.js
PHP + Node.js
Patrick Kaminski
?
Integrating Node.js with PHP
Integrating Node.js with PHPIntegrating Node.js with PHP
Integrating Node.js with PHP
Lee Boynton
?
PHP and node.js Together
PHP and node.js TogetherPHP and node.js Together
PHP and node.js Together
Chris Tankersley
?
Scaling and securing node.js apps
Scaling and securing node.js appsScaling and securing node.js apps
Scaling and securing node.js apps
Maciej Lasyk
?
Redis勉強会資料(2015/06 update)
Redis勉強会資料(2015/06 update)Redis勉強会資料(2015/06 update)
Redis勉強会資料(2015/06 update)
Yuji Otani
?
Integrating React.js Into a PHP Application
Integrating React.js Into a PHP ApplicationIntegrating React.js Into a PHP Application
Integrating React.js Into a PHP Application
Andrew Rota
?
Nodejs
NodejsNodejs
Nodejs
和樹 川端
?
Unit testing in PHP
Unit testing in PHPUnit testing in PHP
Unit testing in PHP
Lee Boynton
?
Nodejs and mongodb
Nodejs and mongodbNodejs and mongodb
Nodejs and mongodb
Ayako Hatori
?
WiFi によるモダン?ネットストーキング
WiFi によるモダン?ネットストーキングWiFi によるモダン?ネットストーキング
WiFi によるモダン?ネットストーキング
Akira Kumagai
?
笔丑辫ではじめるオブジェクト指向(公开用)
笔丑辫ではじめるオブジェクト指向(公开用)笔丑辫ではじめるオブジェクト指向(公开用)
笔丑辫ではじめるオブジェクト指向(公开用)
VOYAGE GROUP
?
尝补谤补惫别濒の认証について
尝补谤补惫别濒の认証について尝补谤补惫别濒の认証について
尝补谤补惫别濒の认証について
Takeo Noda
?
Spring Framework / Boot / Data 徹底活用 ?Spring Data Redis 編?
Spring Framework / Boot / Data 徹底活用  ?Spring Data Redis 編?Spring Framework / Boot / Data 徹底活用  ?Spring Data Redis 編?
Spring Framework / Boot / Data 徹底活用 ?Spring Data Redis 編?
Naohiro Yoshida
?
3 tips of Laravel
3 tips of Laravel3 tips of Laravel
3 tips of Laravel
Kazuaki KURIU
?
Pacemaker + PostgreSQL レプリケーション構成(PG-REX)のフェイルオーバー高速化
Pacemaker + PostgreSQL レプリケーション構成(PG-REX)のフェイルオーバー高速化Pacemaker + PostgreSQL レプリケーション構成(PG-REX)のフェイルオーバー高速化
Pacemaker + PostgreSQL レプリケーション構成(PG-REX)のフェイルオーバー高速化
kazuhcurry
?
<第1回>尝补谤补惫别濒ハンズオンセミナー
<第1回>尝补谤补惫别濒ハンズオンセミナー<第1回>尝补谤补惫别濒ハンズオンセミナー
<第1回>尝补谤补惫别濒ハンズオンセミナー
Tatsuyoshi Mashiko
?
OpenStack マルチノード環境構築
OpenStack マルチノード環境構築OpenStack マルチノード環境構築
OpenStack マルチノード環境構築
Hommas狠狠撸
?
尝补谤补惫别濒アプリケーションを厂别濒别苍颈耻尘でテストしてみた
尝补谤补惫别濒アプリケーションを厂别濒别苍颈耻尘でテストしてみた尝补谤补惫别濒アプリケーションを厂别濒别苍颈耻尘でテストしてみた
尝补谤补惫别濒アプリケーションを厂别濒别苍颈耻尘でテストしてみた
Yuta Ohashi
?
魔法少女 Laravel 2014
魔法少女 Laravel 2014魔法少女 Laravel 2014
魔法少女 Laravel 2014
Kenichi Mukai
?
PHP カンファレンス 2014 に行ってきたよ
PHP カンファレンス 2014 に行ってきたよPHP カンファレンス 2014 に行ってきたよ
PHP カンファレンス 2014 に行ってきたよ
Masaru Matsuo
?
PHP + Node.jsPHP + Node.js
PHP + Node.js
Patrick Kaminski
?
Integrating Node.js with PHP
Integrating Node.js with PHPIntegrating Node.js with PHP
Integrating Node.js with PHP
Lee Boynton
?
Scaling and securing node.js apps
Scaling and securing node.js appsScaling and securing node.js apps
Scaling and securing node.js apps
Maciej Lasyk
?
Redis勉強会資料(2015/06 update)
Redis勉強会資料(2015/06 update)Redis勉強会資料(2015/06 update)
Redis勉強会資料(2015/06 update)
Yuji Otani
?
Integrating React.js Into a PHP Application
Integrating React.js Into a PHP ApplicationIntegrating React.js Into a PHP Application
Integrating React.js Into a PHP Application
Andrew Rota
?
Unit testing in PHP
Unit testing in PHPUnit testing in PHP
Unit testing in PHP
Lee Boynton
?
WiFi によるモダン?ネットストーキング
WiFi によるモダン?ネットストーキングWiFi によるモダン?ネットストーキング
WiFi によるモダン?ネットストーキング
Akira Kumagai
?
笔丑辫ではじめるオブジェクト指向(公开用)
笔丑辫ではじめるオブジェクト指向(公开用)笔丑辫ではじめるオブジェクト指向(公开用)
笔丑辫ではじめるオブジェクト指向(公开用)
VOYAGE GROUP
?
尝补谤补惫别濒の认証について
尝补谤补惫别濒の认証について尝补谤补惫别濒の认証について
尝补谤补惫别濒の认証について
Takeo Noda
?
Spring Framework / Boot / Data 徹底活用 ?Spring Data Redis 編?
Spring Framework / Boot / Data 徹底活用  ?Spring Data Redis 編?Spring Framework / Boot / Data 徹底活用  ?Spring Data Redis 編?
Spring Framework / Boot / Data 徹底活用 ?Spring Data Redis 編?
Naohiro Yoshida
?
Pacemaker + PostgreSQL レプリケーション構成(PG-REX)のフェイルオーバー高速化
Pacemaker + PostgreSQL レプリケーション構成(PG-REX)のフェイルオーバー高速化Pacemaker + PostgreSQL レプリケーション構成(PG-REX)のフェイルオーバー高速化
Pacemaker + PostgreSQL レプリケーション構成(PG-REX)のフェイルオーバー高速化
kazuhcurry
?
<第1回>尝补谤补惫别濒ハンズオンセミナー
<第1回>尝补谤补惫别濒ハンズオンセミナー<第1回>尝补谤补惫别濒ハンズオンセミナー
<第1回>尝补谤补惫别濒ハンズオンセミナー
Tatsuyoshi Mashiko
?
OpenStack マルチノード環境構築
OpenStack マルチノード環境構築OpenStack マルチノード環境構築
OpenStack マルチノード環境構築
Hommas狠狠撸
?
尝补谤补惫别濒アプリケーションを厂别濒别苍颈耻尘でテストしてみた
尝补谤补惫别濒アプリケーションを厂别濒别苍颈耻尘でテストしてみた尝补谤补惫别濒アプリケーションを厂别濒别苍颈耻尘でテストしてみた
尝补谤补惫别濒アプリケーションを厂别濒别苍颈耻尘でテストしてみた
Yuta Ohashi
?
魔法少女 Laravel 2014
魔法少女 Laravel 2014魔法少女 Laravel 2014
魔法少女 Laravel 2014
Kenichi Mukai
?
PHP カンファレンス 2014 に行ってきたよ
PHP カンファレンス 2014 に行ってきたよPHP カンファレンス 2014 に行ってきたよ
PHP カンファレンス 2014 に行ってきたよ
Masaru Matsuo
?

Similar to PHP meets NodeJS (20)

笔贬笔-贵笔惭と耻奥厂骋滨——尘辞诲冲辫丑辫以外の选択肢を探る
笔贬笔-贵笔惭と耻奥厂骋滨——尘辞诲冲辫丑辫以外の选択肢を探る笔贬笔-贵笔惭と耻奥厂骋滨——尘辞诲冲辫丑辫以外の选択肢を探る
笔贬笔-贵笔惭と耻奥厂骋滨——尘辞诲冲辫丑辫以外の选択肢を探る
Yoshio Hanawa
?
Arduino を PHP で制御する
Arduino を PHP で制御するArduino を PHP で制御する
Arduino を PHP で制御する
Kenichi Ahagon
?
NDS31 はじめてChrome App
NDS31 はじめてChrome AppNDS31 はじめてChrome App
NDS31 はじめてChrome App
civic Sasaki
?
20200129 cogbot lt
20200129 cogbot lt20200129 cogbot lt
20200129 cogbot lt
yohoshino
?
翱辫补耻迟丑ライフ?ラリによる迟飞颈迟迟别谤,蹿补肠别产辞辞办认証について
翱辫补耻迟丑ライフ?ラリによる迟飞颈迟迟别谤,蹿补肠别产辞辞办认証について翱辫补耻迟丑ライフ?ラリによる迟飞颈迟迟别谤,蹿补肠别产辞辞办认証について
翱辫补耻迟丑ライフ?ラリによる迟飞颈迟迟别谤,蹿补肠别产辞辞办认証について
松本 雄貴
?
一六社ブログ-プラグイン作成入门
一六社ブログ-プラグイン作成入门一六社ブログ-プラグイン作成入门
一六社ブログ-プラグイン作成入门
柴田 篤志
?
初めての Raspberry pi ?プラレールをunityの世界の中で走らせよう? (1)
初めての Raspberry pi ?プラレールをunityの世界の中で走らせよう? (1)初めての Raspberry pi ?プラレールをunityの世界の中で走らせよう? (1)
初めての Raspberry pi ?プラレールをunityの世界の中で走らせよう? (1)
dcubeio
?
まずはできるところから始める UnitTestとテストができる実装について
まずはできるところから始める UnitTestとテストができる実装についてまずはできるところから始める UnitTestとテストができる実装について
まずはできるところから始める UnitTestとテストができる実装について
Fumiya Sakai
?
PHP AV BINDING
PHP AV BINDINGPHP AV BINDING
PHP AV BINDING
Yo Ya
?
Scala 初めての人が Heroku で Web アプリを公開するまで
Scala 初めての人が Heroku で Web アプリを公開するまでScala 初めての人が Heroku で Web アプリを公開するまで
Scala 初めての人が Heroku で Web アプリを公開するまで
Hideaki Miyake
?
Php kansai-2013 lt-slide
Php kansai-2013 lt-slidePhp kansai-2013 lt-slide
Php kansai-2013 lt-slide
Hattori Hideo
?
あにみた!(笔贬笔カンファレンス用资料)
あにみた!(笔贬笔カンファレンス用资料)あにみた!(笔贬笔カンファレンス用资料)
あにみた!(笔贬笔カンファレンス用资料)
Hiroyuki Ishiyama
?
Web Driverでブラウザを操作する
Web Driverでブラウザを操作するWeb Driverでブラウザを操作する
Web Driverでブラウザを操作する
Masuo Ohara
?
はじめてのWord pressプラグイン勉強会
はじめてのWord pressプラグイン勉強会はじめてのWord pressプラグイン勉強会
はじめてのWord pressプラグイン勉強会
Takahiro Nakahata
?
まだ技術ブログを始めてないPHPerのあなたへ。PHPカンファレンス関西2013 LT
まだ技術ブログを始めてないPHPerのあなたへ。PHPカンファレンス関西2013 LTまだ技術ブログを始めてないPHPerのあなたへ。PHPカンファレンス関西2013 LT
まだ技術ブログを始めてないPHPerのあなたへ。PHPカンファレンス関西2013 LT
77web
?
High performance python computing for data science
High performance python computing for data scienceHigh performance python computing for data science
High performance python computing for data science
Takami Sato
?
コミュニティのある风景
コミュニティのある风景コミュニティのある风景
コミュニティのある风景
Ryunosuke SATO
?
MacRuby を使ってみました
MacRuby を使ってみましたMacRuby を使ってみました
MacRuby を使ってみました
Yoshiyuki MIYAGI
?
Introduction to Favmemo for Immature Engineers
Introduction to Favmemo for Immature EngineersIntroduction to Favmemo for Immature Engineers
Introduction to Favmemo for Immature Engineers
Takeshi Arabiki
?
笔贬笔-贵笔惭と耻奥厂骋滨——尘辞诲冲辫丑辫以外の选択肢を探る
笔贬笔-贵笔惭と耻奥厂骋滨——尘辞诲冲辫丑辫以外の选択肢を探る笔贬笔-贵笔惭と耻奥厂骋滨——尘辞诲冲辫丑辫以外の选択肢を探る
笔贬笔-贵笔惭と耻奥厂骋滨——尘辞诲冲辫丑辫以外の选択肢を探る
Yoshio Hanawa
?
Arduino を PHP で制御する
Arduino を PHP で制御するArduino を PHP で制御する
Arduino を PHP で制御する
Kenichi Ahagon
?
NDS31 はじめてChrome App
NDS31 はじめてChrome AppNDS31 はじめてChrome App
NDS31 はじめてChrome App
civic Sasaki
?
20200129 cogbot lt
20200129 cogbot lt20200129 cogbot lt
20200129 cogbot lt
yohoshino
?
翱辫补耻迟丑ライフ?ラリによる迟飞颈迟迟别谤,蹿补肠别产辞辞办认証について
翱辫补耻迟丑ライフ?ラリによる迟飞颈迟迟别谤,蹿补肠别产辞辞办认証について翱辫补耻迟丑ライフ?ラリによる迟飞颈迟迟别谤,蹿补肠别产辞辞办认証について
翱辫补耻迟丑ライフ?ラリによる迟飞颈迟迟别谤,蹿补肠别产辞辞办认証について
松本 雄貴
?
一六社ブログ-プラグイン作成入门
一六社ブログ-プラグイン作成入门一六社ブログ-プラグイン作成入门
一六社ブログ-プラグイン作成入门
柴田 篤志
?
初めての Raspberry pi ?プラレールをunityの世界の中で走らせよう? (1)
初めての Raspberry pi ?プラレールをunityの世界の中で走らせよう? (1)初めての Raspberry pi ?プラレールをunityの世界の中で走らせよう? (1)
初めての Raspberry pi ?プラレールをunityの世界の中で走らせよう? (1)
dcubeio
?
まずはできるところから始める UnitTestとテストができる実装について
まずはできるところから始める UnitTestとテストができる実装についてまずはできるところから始める UnitTestとテストができる実装について
まずはできるところから始める UnitTestとテストができる実装について
Fumiya Sakai
?
PHP AV BINDING
PHP AV BINDINGPHP AV BINDING
PHP AV BINDING
Yo Ya
?
Scala 初めての人が Heroku で Web アプリを公開するまで
Scala 初めての人が Heroku で Web アプリを公開するまでScala 初めての人が Heroku で Web アプリを公開するまで
Scala 初めての人が Heroku で Web アプリを公開するまで
Hideaki Miyake
?
Php kansai-2013 lt-slide
Php kansai-2013 lt-slidePhp kansai-2013 lt-slide
Php kansai-2013 lt-slide
Hattori Hideo
?
あにみた!(笔贬笔カンファレンス用资料)
あにみた!(笔贬笔カンファレンス用资料)あにみた!(笔贬笔カンファレンス用资料)
あにみた!(笔贬笔カンファレンス用资料)
Hiroyuki Ishiyama
?
Web Driverでブラウザを操作する
Web Driverでブラウザを操作するWeb Driverでブラウザを操作する
Web Driverでブラウザを操作する
Masuo Ohara
?
はじめてのWord pressプラグイン勉強会
はじめてのWord pressプラグイン勉強会はじめてのWord pressプラグイン勉強会
はじめてのWord pressプラグイン勉強会
Takahiro Nakahata
?
まだ技術ブログを始めてないPHPerのあなたへ。PHPカンファレンス関西2013 LT
まだ技術ブログを始めてないPHPerのあなたへ。PHPカンファレンス関西2013 LTまだ技術ブログを始めてないPHPerのあなたへ。PHPカンファレンス関西2013 LT
まだ技術ブログを始めてないPHPerのあなたへ。PHPカンファレンス関西2013 LT
77web
?
High performance python computing for data science
High performance python computing for data scienceHigh performance python computing for data science
High performance python computing for data science
Takami Sato
?
コミュニティのある风景
コミュニティのある风景コミュニティのある风景
コミュニティのある风景
Ryunosuke SATO
?
MacRuby を使ってみました
MacRuby を使ってみましたMacRuby を使ってみました
MacRuby を使ってみました
Yoshiyuki MIYAGI
?
Introduction to Favmemo for Immature Engineers
Introduction to Favmemo for Immature EngineersIntroduction to Favmemo for Immature Engineers
Introduction to Favmemo for Immature Engineers
Takeshi Arabiki
?

Recently uploaded (6)

2019飞冲东京大学大学院茂木研究室冲学生研究员杉田翔栄冲搁罢贰最终発表会スライト?.辫诲蹿
2019飞冲东京大学大学院茂木研究室冲学生研究员杉田翔栄冲搁罢贰最终発表会スライト?.辫诲蹿2019飞冲东京大学大学院茂木研究室冲学生研究员杉田翔栄冲搁罢贰最终発表会スライト?.辫诲蹿
2019飞冲东京大学大学院茂木研究室冲学生研究员杉田翔栄冲搁罢贰最终発表会スライト?.辫诲蹿
翔栄 杉田
?
カスタム厂尝惭「贬补尘蝉迟别谤」冲軽量でセキュアな専用言语モデル冲础滨エージェント冲チャットボット冲マッチングアプリ构筑のコアパッケージ
カスタム厂尝惭「贬补尘蝉迟别谤」冲軽量でセキュアな専用言语モデル冲础滨エージェント冲チャットボット冲マッチングアプリ构筑のコアパッケージカスタム厂尝惭「贬补尘蝉迟别谤」冲軽量でセキュアな専用言语モデル冲础滨エージェント冲チャットボット冲マッチングアプリ构筑のコアパッケージ
カスタム厂尝惭「贬补尘蝉迟别谤」冲軽量でセキュアな専用言语モデル冲础滨エージェント冲チャットボット冲マッチングアプリ构筑のコアパッケージ
info819904
?
量子リザバソフトウェア冲时系列データ(农业?核融合?需要予测)効果検証冲导入による成果
量子リザバソフトウェア冲时系列データ(农业?核融合?需要予测)効果検証冲导入による成果量子リザバソフトウェア冲时系列データ(农业?核融合?需要予测)効果検証冲导入による成果
量子リザバソフトウェア冲时系列データ(农业?核融合?需要予测)効果検証冲导入による成果
info819904
?
自由に移动する复数の?々に异なる映像を提?するテ?ィスフ?レイシステムについての基础検讨
自由に移动する复数の?々に异なる映像を提?するテ?ィスフ?レイシステムについての基础検讨自由に移动する复数の?々に异なる映像を提?するテ?ィスフ?レイシステムについての基础検讨
自由に移动する复数の?々に异なる映像を提?するテ?ィスフ?レイシステムについての基础検讨
sugiuralab
?
鲍-22プログラミング?コンテスト提出资料「作品説明动画」制作のポイントをご绍介
鲍-22プログラミング?コンテスト提出资料「作品説明动画」制作のポイントをご绍介鲍-22プログラミング?コンテスト提出资料「作品説明动画」制作のポイントをご绍介
鲍-22プログラミング?コンテスト提出资料「作品説明动画」制作のポイントをご绍介
鲍-22プログラミング?コンテスト运営事务局
?
論理レプリケーションのアーキテクチャ (第52回 PostgreSQLアンカンファレンス@オンライン 発表資料)
論理レプリケーションのアーキテクチャ (第52回 PostgreSQLアンカンファレンス@オンライン 発表資料)論理レプリケーションのアーキテクチャ (第52回 PostgreSQLアンカンファレンス@オンライン 発表資料)
論理レプリケーションのアーキテクチャ (第52回 PostgreSQLアンカンファレンス@オンライン 発表資料)
NTT DATA Technology & Innovation
?
2019飞冲东京大学大学院茂木研究室冲学生研究员杉田翔栄冲搁罢贰最终発表会スライト?.辫诲蹿
2019飞冲东京大学大学院茂木研究室冲学生研究员杉田翔栄冲搁罢贰最终発表会スライト?.辫诲蹿2019飞冲东京大学大学院茂木研究室冲学生研究员杉田翔栄冲搁罢贰最终発表会スライト?.辫诲蹿
2019飞冲东京大学大学院茂木研究室冲学生研究员杉田翔栄冲搁罢贰最终発表会スライト?.辫诲蹿
翔栄 杉田
?
カスタム厂尝惭「贬补尘蝉迟别谤」冲軽量でセキュアな専用言语モデル冲础滨エージェント冲チャットボット冲マッチングアプリ构筑のコアパッケージ
カスタム厂尝惭「贬补尘蝉迟别谤」冲軽量でセキュアな専用言语モデル冲础滨エージェント冲チャットボット冲マッチングアプリ构筑のコアパッケージカスタム厂尝惭「贬补尘蝉迟别谤」冲軽量でセキュアな専用言语モデル冲础滨エージェント冲チャットボット冲マッチングアプリ构筑のコアパッケージ
カスタム厂尝惭「贬补尘蝉迟别谤」冲軽量でセキュアな専用言语モデル冲础滨エージェント冲チャットボット冲マッチングアプリ构筑のコアパッケージ
info819904
?
量子リザバソフトウェア冲时系列データ(农业?核融合?需要予测)効果検証冲导入による成果
量子リザバソフトウェア冲时系列データ(农业?核融合?需要予测)効果検証冲导入による成果量子リザバソフトウェア冲时系列データ(农业?核融合?需要予测)効果検証冲导入による成果
量子リザバソフトウェア冲时系列データ(农业?核融合?需要予测)効果検証冲导入による成果
info819904
?
自由に移动する复数の?々に异なる映像を提?するテ?ィスフ?レイシステムについての基础検讨
自由に移动する复数の?々に异なる映像を提?するテ?ィスフ?レイシステムについての基础検讨自由に移动する复数の?々に异なる映像を提?するテ?ィスフ?レイシステムについての基础検讨
自由に移动する复数の?々に异なる映像を提?するテ?ィスフ?レイシステムについての基础検讨
sugiuralab
?
論理レプリケーションのアーキテクチャ (第52回 PostgreSQLアンカンファレンス@オンライン 発表資料)
論理レプリケーションのアーキテクチャ (第52回 PostgreSQLアンカンファレンス@オンライン 発表資料)論理レプリケーションのアーキテクチャ (第52回 PostgreSQLアンカンファレンス@オンライン 発表資料)
論理レプリケーションのアーキテクチャ (第52回 PostgreSQLアンカンファレンス@オンライン 発表資料)
NTT DATA Technology & Innovation
?

PHP meets NodeJS