芯友网xin1234.com

PHP 实现并发,有什么好的思路吗?



【吐槽】facebook电商APP
PHP 实现并发,有什么好的思路吗?
我打算这样做架构,筒子们来批一下
pfork, popen, 显然不行,资源耗损大,pthread, 那么必须安装thread safe PHP版本,资源耗损也大。

curl, fsocket, socket_steam_client, 通过HTTP, 效率也不行

打错了,不是并发,是多线程
PHP python
只能用pthread
要看你的需求是计算密集还是IO密集
如果IO密集可以看看PYTHON的携程
协程
如果是计算密集还用毛的脚本语言
C JAVA
老吴
也可以选择用go
PHP python
GO熟悉的人太少
不好找
老吴
学习成本不大
A.Dr.
大家好,发布一条招聘信息
岗位职责:
负责开发平台资源网站(公司主要做流媒体音视频的)(不是外派,也不是外包公司)(该职位主要负责前端的开发)
任职要求:
1.精通HTML/XHTML、CSS等网页制作技术,熟悉页面架构和布局
2. 熟悉php语言、JavaScript等
3. 具有一定的设计能力,能独立设计web页面、软件UI使之美观
4. 有丰富的关于Web标准、易用性、浏览器端原理以及网站性能等方面的知识
5. 对Web技术发展有强烈兴趣,有良好的学习能力和强烈的进取心
6. 良好的沟通与表达能力、思路清晰,较强的动手能力与逻辑分析能力
7.
 学历不限,至少2年同类工作经验
工作地点:成都
联系方式:请先跟我小窗口一下或直接将简历发至QQ邮箱(不在群里讨论),QQ号码:  401515395  ;   401515395@qq.com
丘比特_腾睿
oh' rabbit
成都IT公司,诚招PHP开发工程师,要求有两年的工作经验,熟悉thinkphp  YII等框架,有网站PHP 开发经验。 双休~灵活工作时间,五险一金,工作餐,公司旅行,年终奖, 待遇8K-15K。视能力而定,工资不封顶, 地址:一环路西二段  青羊宫对面。
坏蛋学兵法

为什么我用PHPExcel下载到本地的xls打开是这个样子,但是在服务器的是正常的啊,哪位大侠指点一下
曹操
今天去银行没
打错了
facebook电商APP
pthread 太耗费资源了
老吴
用go吧
招聘@成都
【研发职位】Android程序 Unity3D程序 Erlang程序(接受到公司后学习)PHP程序 系统策划 数值策划 测试专员 各种实习生!
【美术职位】2D原画 3D动作 3D场景/角色 主美 美术设计(专题) 
【运营职位】产品/运营专员(经理)运营活动策划 网站美术主管(美宣) 客服专员 
【其他职位】行政专员(主管)、项目助理

工作地点:成都天府软件园E区
已上线手游项目:
《星座女神》《我是死神》
咨询QQ:910012762更多新项目期待你的加入
facebook电商APP
我本人认为,选用非线程安全的PHP,加go,是最优的选择
老吴
我做过一个项目
PHP做web
业务用go
facebook电商APP
我的问题,是数据库大,一方面是大量的查询,一方面是大量的数据更新,关键是数据更新是麻烦。

更新是麻烦,insert, update, 特别是delete, 效率低下,特别是添加了索引,分区的情况。我把更新统一让go处理,任务量大,开多个goroutine
老吴
我是用go异步处理
PHP发送请求马上就返回
go后台处理
facebook电商APP
如果某更新关联到以后的提取,添加一个特定的mysql name lock, 更新完成后解锁。让PHP提取
把go 写成一个监听hub的,不通过http,而通过其他方式让PHP同go联系,这样效率要快很多,远远优于pthread.
为什么选用线程安全的PHP?完全没有必要,当PHP涉及到线程安全检查的时候,效率,系统开销就大了。
筒子们,这就是我的架构思路
老吴
可以用zeromq
facebook电商APP
如果单纯的让PHP同go联系,redis pub/sub就OK了。 
老吴
redis 还要开销  没必要
facebook电商APP
一旦联系上, 让go 开启一个goroutine,模拟PHP的一个进程
这样,我的PHP就可以效率高效的处理任意多的任务了,而且,是backgroud方式的
而且,没有增加系统开销
讠灬亮
异步+批量,不要来一个就处理一个,有的处理可以合并,比如insert这种,delete这种。
facebook电商APP
采用我上面的说的方式,不存在这样的问题,来一个处理一个
讠灬亮
没那么多量,想再多浪费时间和精力。
facebook电商APP
即便是delete, 也可以放在多个goroutine中搞,就看数据库承受得起不
如果一定涉及处理后的查询结果,加一个name 锁。解锁后才可以查询。如果查询不涉及处理后的结果,name 锁都没必须加
讠灬亮
不要过度设计,先做好业务,
facebook电商APP
这不是过度涉及,这是系统架构。业务量一大,你的系统就会出问题
记忆中的风雨
讠灬亮
预估一年的量就够了
mysql没有那么弱
还有分库分表这些
单表不会那么大
记忆中的风雨
facebook电商APP
单表不会那么大?你以为如此吗?
讠灬亮
我是这样认为的
facebook电商APP
我是做facebook开发,我的系统是不断抓取用户数据,很快就大得不可思议,分区索引这些都是必须的
老吴
为啥一定MySQL
facebook电商APP
如果涉及社区化开发,数据库是非常庞大
讠灬亮
你可以灰度测试
先开放给其中部分地区
然后预估你的量,你以为上到facebook,一下就都来用啊。
facebook电商APP
不用mysql, 用oracle吗?
这些东西是思想?写代码的量的根本不大,go代替实施多任务,昨天晚上我基本就写好了,测试效果,比curl强多了
为什么一定让go监听http?换一个思路,其实可以监听消息,大幅度提高效率
讠灬亮
。。
facebook电商APP
为什么一定让go监听http?我们又不让其来做web.换一个思路,其实可以监听消息,还可以整成MC的实行,conroller+model, 大幅度提高效率
s孩子KaKa
一台数据库服务器IO都写不满,有必要搞这么麻烦?
facebook电商APP
麻烦不麻烦,看自己的实际运用
讠灬亮

务实点,架构不是一步到位的
记忆中的风雨
讠灬亮
很多公司都是逐步完善的
等你有这级别,你也不缺人缺钱了
s孩子KaKa
脱离业务谈架构基本上就是耍流氓
铁马江湖
讠灬亮
+1
facebook电商APP
找一个框架,thinkPHP, yii, 随便弄一弄,就不是耍流氓?
Studious-阳[南宫寒痕]
各有各理  看项目决定
记忆中的风雨
Studious-阳[南宫寒痕]
公司大小有很大关系 多大的公司 干多大的事
s孩子KaKa
高并发和语言基本上没什么关系,和业务设计有关. 基本上目前市面上主流工程语言都能实现高并发
记忆中的风雨
讠灬亮
他们业务已经用php不能满足了,开始上c扩展了,erlang做消息中间件
逃)
其实我很好奇他们公司现在规模多大,是不是只是拍脑袋在天天想着产品一上线就服务器扛不住,对了,就一台机器那肯定扛不住,再怎么设计都没用
Studious-阳[南宫寒痕]
肯定了的   要不那么大一票子人干嘛啊
facebook电商APP
很多人忽视了这点,社区化是一个趋势,社区行为的入库。
数据库大得很快
铁马江湖
自信的牛人才是真正的牛人
facebook电商APP
PHP线程安全的版本处理多线程,毫无疑问,开销比PHP非线程安全+go的开销要大很多
涉及线程安全检查要大幅度增加系统开销,这是一个基本常识了
s孩子KaKa
我是高进        ~
 TP里面assign的第一个参数,是不是在视图上面 使用的时候一样,<volist name='liuyanban' id='vo'>
s孩子KaKa
那大部分Linux的程序都不是按线程的方式写的
facebook电商APP
fastcgi 的PHP在windows下飞快,因为是单线程的, 但是,多任务的backgroud处理的确麻烦
s孩子KaKa
那就没法玩了
...... 好吧, windows, 当我啥都没说
讠灬亮
我上次玩windows是玩dota
facebook电商APP
我是说效率, 在debian, centos下面,你同样也可以安装非线程安全的PHP。我用的就是debian
s孩子KaKa
php的thread safe讲的是啥
http://stackoverflow.com/questions/1623914/what-is-thread-safe-or-non-thread-safe-in-php
请看看这个帖子
facebook电商APP
用的PHP5.4, 非线程安全的,因为,我不想让PHP来多线程,涉及到了,提交go
讠灬亮

我装起逼来自己都拦不住
s孩子KaKa
这里面说得很清楚了
facebook电商APP
可以用pthread,  注意,我说的是效率问题
讠灬亮
这点效率没你想的那么多,
facebook电商APP
pthread, 必须建立在thread-safe PHP的基础上
讠灬亮
少年
@facebook电商APP 我发现了一个规律,有你说话的地方,一定有s孩子KaKa
讠灬亮
关键是架构的问题
少年
就像鸣人和佐助,必须同时出现
讠灬亮
就一台机器,你要让他扛一个聚美啊
铁马江湖
鸣人和佐助,赶紧百度一下
facebook电商APP
不聊了,你们这群聊娱乐八卦还实在点
铁马江湖
火影忍者,高手对决。。。
比喻还蛮恰当的
少年
@facebook电商APP 不过还是满拼的,我记得几个月前你在说go,现在已经在用了

相关问题
我小白请教个问题 那些PHP网站为什么要用nginx  用APACHE不是更好吗】 并发处理高啊;反向代理。;http:
在内网测试,模拟100个并发30秒,redis链接就出错了,之前用connect链接,后来用pc】 没那么容易崩溃吧,会不会是防火墙起效了?;并发30秒是什么东东.;持续30秒
有人会配置Apache+php吗?windows环境连不上数据库Apache+MySQL+php】 啥情况;我在再问 这个;;
有谁知道怎么用PHP重启apache吗?目前卡在只能stop,start不起来】 端口被占用;端口没有被占用命令行启动有效,用PHP发送命令无效;
------分隔线----------------------------
赞助商链接
赞助商链接