• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

PHP 的并行如何实现?

php 搞代码 3年前 (2022-01-23) 10次浏览 已收录 0个评论
文章目录[隐藏]

要实现一个广播功能,广播的表里有内容,开始时间,结束时间,间隔时间。
如图:

我用do while 做定时处理,代码如下:

do{			$ti = strtotime(date('Y-m-d H:i:s'));//当前时间戳						$array  = $this->all_broadcast();//<span>%本文来源gaodai#ma#com搞*代#码9网#</span><strong>搞gaodaima代码</strong>广播数组						foreach($array as $key => $val){				$intervals = 60;//(秒)间隔时间				$content = urlencode($val['content']);//广播内容									if($ti >= $val['starttime'] && $ti get_curl($content);//调用广播的方法开始广播					sleep($intervals);//间隔时间调用一次				}								fclose($fp);			}					sleep(10);//10秒		}while(true);

现在的问题是:如果广播是一条的话,可以根据间隔时间来按时广播。如果广播有好几条,那他就不能在同一时间调用get_curl方法N次。这要怎么解决呢?
怎样能让他们根据各自的开始时间、结束时间、间隔时间,互不干扰地进行播放呢?
这是不是需要PHP中的并行来实现呢?

回复讨论(解决方案)

这个问题貌似涉及到了多线程,如果在java中可以做到,弄多个线程让它跑就是了。
php不支持多线程。但是可以用一个苯点的办法实现你要的需求就是:定时任务;
linux下可以用crontab来实现。

试试 curl_multi 吧

这个问题貌似涉及到了多线程,如果在java中可以做到,弄多个线程让它跑就是了。
php不支持多线程。但是可以用一个苯点的办法实现你要的需求就是:定时任务;
linux下可以用crontab来实现。 不是linux的系统,win下怎么实现呢?能点建议吧!

1086 和 1087 的开始时间相同
你打算混合输出这两条内容?

这个问题貌似涉及到了多线程,如果在java中可以做到,弄多个线程让它跑就是了。
php不支持多线程。但是可以用一个苯点的办法实现你要的需求就是:定时任务;
linux下可以用crontab来实现。 不是linux的系统,win下怎么实现呢?能点建议吧!

windows装一个crontab工具

1086 和 1087 的开始时间相同
你打算混合输出这两条内容?
是的。他们互不干扰地输入各种预先设定好的!

不知道什么意思,

sleep(10);//10秒
这个不会在网页上显示内容 啊只有10 过后才会显示,一次性显示,
你的好像是死循环吧

我也是新人

并行未必需要用多线程~ 而且php的多线程库在cgi下鬼知道会发生什么情况,绝对要好好测试下,有兴趣的同学试试。
回到正题,楼主可能需要的是异步~
比如程序运行到某一刻发一条通知到某个处理单元(实现方式先不论),然后也不等待这个处理单元的处理结果就直接向下执行,这样就能省下时间~
关于这个,鸟哥讨论过几种实现方式~
http://www.laruence.com/2008/04/14/318.html
另,其中用curl的办法有点小变化,我在评论里加了一笔。

翻了一下文档~ 发现curl 有了毫秒级的超时设置~CURLOPT_CONNECTTIMEOUT_MS 这个选项备注: Added in cURL 7.16.2. Available since PHP 5.2.3我现在用的cURL 7.24 和 php5.4 ~ 暗爽~

当然,时隔这么久,也许有其它更好的办法~ http://www.swoole.com/ 就是一例,私以为这个堪成大器,phper可以不用再跪着写代码了~

好吧,有点不太习惯CSDN自带的文字编辑~ 凑合看吧~

并行未必需要用多线程~ 而且php的多线程库在cgi下鬼知道会发生什么情况,绝对要好好测试下,有兴趣的同学试试。
回到正题,楼主可能需要的是异步~
比如程序运行到某一刻发一条通知到某个处理单元(实现方式先不论),然后也不等待这个处理单元的处理结果就直接向下执行,这样就能省下时间~
关于这个,鸟哥讨论过几种实现方式~
http://www.laruence.com/2008/04/14/318.html
另,其中用curl的办法有点小变化,我在评论里加了一笔。

翻了一下文档~ 发现curl 有了毫秒级的超时设置~CURLOPT_CONNECTTIMEOUT_MS 这个选项备注: Added in cURL 7.16.2. Available since PHP 5.2.3我现在用的cURL 7.24 和 php5.4 ~ 暗爽~

当然,时隔这么久,也许有其它更好的办法~ http://www.swoole.com/ 就是一例,私以为这个堪成大器,phper可以不用再跪着写代码了~

哎!我也看过这个swoole,可看那代码,不像是PHP的啊?而且我复制到代码里都报错。不会用啊这是!


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:PHP 的并行如何实现?

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址