SlideShare uma empresa Scribd logo
1 de 22
Grpc-go 在 PHP 中的 用应
2016/2/24 kitech
grpc 好
●
范规 严谨
●
定稳
● ...
Grpc-go 好
●
纯 golang 实现
●
安装简单
●
行 境要求低运 环
● …
Why IN php
●
web 开发优势
●
代 累码积
●
渡与 接过 衔
●
How IN php
● Grpc-php
●
●
● Phpgo + grpc-go
C is the bridge
●
基本上所有 言都能与语 C 交互
●
php 展能 用扩 调 C 函数
●
go 能 出导 C 函数
● The Evil C
Too complicated ?
● C && PHP && GO
●
参数转换
●
返回 理值处
●
内存 GC
●
效率
Split
●
模 分块划
●
理流程分段处
●
代码组织
Php + C
●
php 展扩
●
成熟 定稳
●
熟悉
●
Go + C
●
go 是与 C 兼容非常好的 言语
●
用 GO 能写 C 函数库
●
用 GO 能 用调 C 函数库
●
松 理数据类型轻 处
●
松轻 #include C 文件头
CGO
●
是官方名字这
●
官方维护
●
官方重点
●
//export
● //export foo
● func foo() {}
●
●
● void foo();
● 00000000001a4cf0 T foo
●
-buildmode=?
● c-shared
● c-archive
● shared
● archive
●
result
● libfoo.h
● libfoo.so
● extension=foo.so
●
But,but,but
● Segment fault in shutdown process
sometimes…
●
●
●
●
● Go runtime?
os.Exit
●
在 GO: os.Exit()
●
在 PHP: GoExit()
● Builtins
●
Can?
● Maybe
● Must
● Want
●
What about without C?
● import “zend”
● zend.RegisterXyz
●
Need wrapper all?
●
Go 公共函数
●
Go 公共 与方法结构
●
● zend.RegisterFunc(“foo”, foo)
● zend.ReigsterClass(“Bar”, Bar)
●
● function_exists(‘foo’) == true
●
Next?
●
代 的完善码
●
代 的整合码
●
代 的码 测试
●
代 的兼容码
●
Thanks
Q & A

Mais conteúdo relacionado

Destaque

TrainingProgramAtMobileDevTW
TrainingProgramAtMobileDevTWTrainingProgramAtMobileDevTW
TrainingProgramAtMobileDevTWRyan Chung
 
Flexbox版面配置
Flexbox版面配置Flexbox版面配置
Flexbox版面配置景智 張
 
UI guide Example
UI guide ExampleUI guide Example
UI guide ExampleHowlin Yang
 
寫出高性能的服務與應用 那些你沒想過的事
寫出高性能的服務與應用 那些你沒想過的事寫出高性能的服務與應用 那些你沒想過的事
寫出高性能的服務與應用 那些你沒想過的事Chieh (Jack) Yu
 
React踩雷大作戰
React踩雷大作戰React踩雷大作戰
React踩雷大作戰皮馬 頑
 
從 LASS 到空氣盒子 - 談網路公民科學的實踐與未來
從 LASS 到空氣盒子 - 談網路公民科學的實踐與未來從 LASS 到空氣盒子 - 談網路公民科學的實踐與未來
從 LASS 到空氣盒子 - 談網路公民科學的實踐與未來Ling-Jyh Chen
 
Stock analysis
Stock analysisStock analysis
Stock analysisHal Chan
 
PHP Conf Taiwan 2016 自動化與持續整合實作工作坊
PHP Conf Taiwan 2016 自動化與持續整合實作工作坊PHP Conf Taiwan 2016 自動化與持續整合實作工作坊
PHP Conf Taiwan 2016 自動化與持續整合實作工作坊Chen Cheng-Wei
 
PHP記帳網頁教材(第一頁是空白的)
PHP記帳網頁教材(第一頁是空白的)PHP記帳網頁教材(第一頁是空白的)
PHP記帳網頁教材(第一頁是空白的)TaiShunHuang
 
Bootstrap, Angel or Venture: Determining the Right Financing Strategy for You...
Bootstrap, Angel or Venture: Determining the Right Financing Strategy for You...Bootstrap, Angel or Venture: Determining the Right Financing Strategy for You...
Bootstrap, Angel or Venture: Determining the Right Financing Strategy for You...Judy Loehr
 
響應式網頁實作坊
響應式網頁實作坊響應式網頁實作坊
響應式網頁實作坊Chih-cheng Wang
 
前端爆肝之旅+React上山前的小專案心得分享
前端爆肝之旅+React上山前的小專案心得分享前端爆肝之旅+React上山前的小專案心得分享
前端爆肝之旅+React上山前的小專案心得分享Yao Nien Chung
 
Rancher: 建立你的牧場艦隊
Rancher: 建立你的牧場艦隊Rancher: 建立你的牧場艦隊
Rancher: 建立你的牧場艦隊Miles Chou
 
PhpSpec TDD 紅燈-綠燈-重構流程-PHP也有day#25_by_閃亮亮
PhpSpec TDD 紅燈-綠燈-重構流程-PHP也有day#25_by_閃亮亮PhpSpec TDD 紅燈-綠燈-重構流程-PHP也有day#25_by_閃亮亮
PhpSpec TDD 紅燈-綠燈-重構流程-PHP也有day#25_by_閃亮亮亮亮 閃
 
專業前端 都如何管理 CSS
專業前端 都如何管理 CSS專業前端 都如何管理 CSS
專業前端 都如何管理 CSSChih-cheng Wang
 
如何運用Bootstrap 切版?
如何運用Bootstrap 切版?如何運用Bootstrap 切版?
如何運用Bootstrap 切版?shiang huang
 
Bootstrap - Web Development Framework
Bootstrap - Web Development FrameworkBootstrap - Web Development Framework
Bootstrap - Web Development FrameworkCindy Royal
 

Destaque (20)

TrainingProgramAtMobileDevTW
TrainingProgramAtMobileDevTWTrainingProgramAtMobileDevTW
TrainingProgramAtMobileDevTW
 
Flexbox版面配置
Flexbox版面配置Flexbox版面配置
Flexbox版面配置
 
UI guide Example
UI guide ExampleUI guide Example
UI guide Example
 
寫出高性能的服務與應用 那些你沒想過的事
寫出高性能的服務與應用 那些你沒想過的事寫出高性能的服務與應用 那些你沒想過的事
寫出高性能的服務與應用 那些你沒想過的事
 
React踩雷大作戰
React踩雷大作戰React踩雷大作戰
React踩雷大作戰
 
從 LASS 到空氣盒子 - 談網路公民科學的實踐與未來
從 LASS 到空氣盒子 - 談網路公民科學的實踐與未來從 LASS 到空氣盒子 - 談網路公民科學的實踐與未來
從 LASS 到空氣盒子 - 談網路公民科學的實踐與未來
 
Stock analysis
Stock analysisStock analysis
Stock analysis
 
PHP Conf Taiwan 2016 自動化與持續整合實作工作坊
PHP Conf Taiwan 2016 自動化與持續整合實作工作坊PHP Conf Taiwan 2016 自動化與持續整合實作工作坊
PHP Conf Taiwan 2016 自動化與持續整合實作工作坊
 
PHP教材
PHP教材PHP教材
PHP教材
 
PHP記帳網頁教材(第一頁是空白的)
PHP記帳網頁教材(第一頁是空白的)PHP記帳網頁教材(第一頁是空白的)
PHP記帳網頁教材(第一頁是空白的)
 
Bootstrap, Angel or Venture: Determining the Right Financing Strategy for You...
Bootstrap, Angel or Venture: Determining the Right Financing Strategy for You...Bootstrap, Angel or Venture: Determining the Right Financing Strategy for You...
Bootstrap, Angel or Venture: Determining the Right Financing Strategy for You...
 
響應式網頁實作坊
響應式網頁實作坊響應式網頁實作坊
響應式網頁實作坊
 
前端爆肝之旅+React上山前的小專案心得分享
前端爆肝之旅+React上山前的小專案心得分享前端爆肝之旅+React上山前的小專案心得分享
前端爆肝之旅+React上山前的小專案心得分享
 
Rancher: 建立你的牧場艦隊
Rancher: 建立你的牧場艦隊Rancher: 建立你的牧場艦隊
Rancher: 建立你的牧場艦隊
 
PhpSpec TDD 紅燈-綠燈-重構流程-PHP也有day#25_by_閃亮亮
PhpSpec TDD 紅燈-綠燈-重構流程-PHP也有day#25_by_閃亮亮PhpSpec TDD 紅燈-綠燈-重構流程-PHP也有day#25_by_閃亮亮
PhpSpec TDD 紅燈-綠燈-重構流程-PHP也有day#25_by_閃亮亮
 
專業前端 都如何管理 CSS
專業前端 都如何管理 CSS專業前端 都如何管理 CSS
專業前端 都如何管理 CSS
 
Bootstrap with liferay
Bootstrap with liferayBootstrap with liferay
Bootstrap with liferay
 
如何運用Bootstrap 切版?
如何運用Bootstrap 切版?如何運用Bootstrap 切版?
如何運用Bootstrap 切版?
 
Data Types In PHP
Data Types In PHPData Types In PHP
Data Types In PHP
 
Bootstrap - Web Development Framework
Bootstrap - Web Development FrameworkBootstrap - Web Development Framework
Bootstrap - Web Development Framework
 

Semelhante a Grpc go-in-php

How to debug using GDB
How to debug using GDBHow to debug using GDB
How to debug using GDBPinkus Chang
 
Introduction to Golang final
Introduction to Golang final Introduction to Golang final
Introduction to Golang final Paul Chao
 
Funliday 新創生活甘苦談
Funliday 新創生活甘苦談Funliday 新創生活甘苦談
Funliday 新創生活甘苦談Mu Chun Wang
 
如何在有限資源下實現十年的後端服務演進
如何在有限資源下實現十年的後端服務演進如何在有限資源下實現十年的後端服務演進
如何在有限資源下實現十年的後端服務演進Mu Chun Wang
 
Adorable python
Adorable pythonAdorable python
Adorable pythonRhythm Sun
 
1.2 刘奇 go在分布式数据库中的应用
1.2 刘奇 go在分布式数据库中的应用1.2 刘奇 go在分布式数据库中的应用
1.2 刘奇 go在分布式数据库中的应用Leo Zhou
 
Python网络抓取小试
Python网络抓取小试Python网络抓取小试
Python网络抓取小试greatghoul
 
recover_pdb 原理與介紹
recover_pdb 原理與介紹recover_pdb 原理與介紹
recover_pdb 原理與介紹kao kuo-tung
 
HTML5 实战 WebApp 阅读应用– Shiu
HTML5 实战 WebApp 阅读应用– ShiuHTML5 实战 WebApp 阅读应用– Shiu
HTML5 实战 WebApp 阅读应用– ShiuJingchao Di
 
Weibo lamp improvements
Weibo lamp improvementsWeibo lamp improvements
Weibo lamp improvementsXinchen Hui
 
Why use dependency injection
Why use dependency injectionWhy use dependency injection
Why use dependency injection彥彬 洪
 
Go 語言基礎簡介
Go 語言基礎簡介Go 語言基礎簡介
Go 語言基礎簡介Bo-Yi Wu
 
Background processing after android O ft. WorkManager
Background processing after android O ft. WorkManagerBackground processing after android O ft. WorkManager
Background processing after android O ft. WorkManagerCarter Chen
 
Grpc + python.key
Grpc + python.keyGrpc + python.key
Grpc + python.keyAndy Dai
 
测试驱动的前端开发初探
测试驱动的前端开发初探测试驱动的前端开发初探
测试驱动的前端开发初探hua qiu
 
Test driven-frontend-develop
Test driven-frontend-developTest driven-frontend-develop
Test driven-frontend-developfangdeng
 
PHP and Zend Internal I - 体系结构及生命周期
PHP and Zend Internal I - 体系结构及生命周期PHP and Zend Internal I - 体系结构及生命周期
PHP and Zend Internal I - 体系结构及生命周期ericzhangcn
 
COSCUP 2019 國際開放原始碼專案經營 - 從失敗中學習
COSCUP 2019 國際開放原始碼專案經營 - 從失敗中學習COSCUP 2019 國際開放原始碼專案經營 - 從失敗中學習
COSCUP 2019 國際開放原始碼專案經營 - 從失敗中學習Jen Yee Hong
 

Semelhante a Grpc go-in-php (20)

How to debug using GDB
How to debug using GDBHow to debug using GDB
How to debug using GDB
 
Introduction to Golang final
Introduction to Golang final Introduction to Golang final
Introduction to Golang final
 
Using vim
Using vimUsing vim
Using vim
 
Funliday 新創生活甘苦談
Funliday 新創生活甘苦談Funliday 新創生活甘苦談
Funliday 新創生活甘苦談
 
如何在有限資源下實現十年的後端服務演進
如何在有限資源下實現十年的後端服務演進如何在有限資源下實現十年的後端服務演進
如何在有限資源下實現十年的後端服務演進
 
Adorable python
Adorable pythonAdorable python
Adorable python
 
1.2 刘奇 go在分布式数据库中的应用
1.2 刘奇 go在分布式数据库中的应用1.2 刘奇 go在分布式数据库中的应用
1.2 刘奇 go在分布式数据库中的应用
 
Python网络抓取小试
Python网络抓取小试Python网络抓取小试
Python网络抓取小试
 
recover_pdb 原理與介紹
recover_pdb 原理與介紹recover_pdb 原理與介紹
recover_pdb 原理與介紹
 
Code
CodeCode
Code
 
HTML5 实战 WebApp 阅读应用– Shiu
HTML5 实战 WebApp 阅读应用– ShiuHTML5 实战 WebApp 阅读应用– Shiu
HTML5 实战 WebApp 阅读应用– Shiu
 
Weibo lamp improvements
Weibo lamp improvementsWeibo lamp improvements
Weibo lamp improvements
 
Why use dependency injection
Why use dependency injectionWhy use dependency injection
Why use dependency injection
 
Go 語言基礎簡介
Go 語言基礎簡介Go 語言基礎簡介
Go 語言基礎簡介
 
Background processing after android O ft. WorkManager
Background processing after android O ft. WorkManagerBackground processing after android O ft. WorkManager
Background processing after android O ft. WorkManager
 
Grpc + python.key
Grpc + python.keyGrpc + python.key
Grpc + python.key
 
测试驱动的前端开发初探
测试驱动的前端开发初探测试驱动的前端开发初探
测试驱动的前端开发初探
 
Test driven-frontend-develop
Test driven-frontend-developTest driven-frontend-develop
Test driven-frontend-develop
 
PHP and Zend Internal I - 体系结构及生命周期
PHP and Zend Internal I - 体系结构及生命周期PHP and Zend Internal I - 体系结构及生命周期
PHP and Zend Internal I - 体系结构及生命周期
 
COSCUP 2019 國際開放原始碼專案經營 - 從失敗中學習
COSCUP 2019 國際開放原始碼專案經營 - 從失敗中學習COSCUP 2019 國際開放原始碼專案經營 - 從失敗中學習
COSCUP 2019 國際開放原始碼專案經營 - 從失敗中學習
 

Grpc go-in-php