PHP 板


LINE

看板 PHP  RSS
大家好,这个问题实在不太晓得要如何下标题 orz... 也不太确定到底应该和 http server 比较有关还是 php... 是这样的,小弟在 Windows 底下用 Apache + php 的组合 要做一个 MJPEG over HTTP 的服务,目前有两个项目,但因为用了 while 回圈以及 set_time_limit(0) 会担心使用者浏览完并关掉网页之後 php 是否还会一直跑 while , 造成系统负担 (如何送 mjpeg over http 这个没问题) 1. 循环播放主机中的图片档案 2. 用 curl 去抓取另一台主机的 mjpeg 先来说 1 吧,简单来说就是送出 header 之後,用 while(1) 的回圈 去循环一个 filePath 的 array , 这些都是 jpg 图档,把档案内容 echo 出去 ( echo file_get_contents(filePath[$i]); ) 而 2 则是有一个 IP Cam 用 mjpg 的格式输出影像,但连上需要登入 我利用 curl 带着验证的 header 送过去并取得 mjpeg ,是成功了, 但也遇到和 1 相同的疑问,也就是既然 mjpeg 是会持续不断送资料过来, 所以我的 php 就不会停止 while 回圈,加上 set_time_limit(0) 这样的状况下使用者关掉网页, php 是否会自己会停止运作? 程式码大概长这样: set_time_limit(0); $isHeader=true; $url = "http://the.ipcam.host/video2.mjpg"; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_HEADER, TRUE); curl_setopt($ch, CURLOPT_NOBODY, FALSE); curl_setopt($ch, CURLOPT_RETURNTRANSFER, FALSE); curl_setopt($ch, CURLOPT_AUTOREFERER, TRUE); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); curl_setopt($ch, CURLOPT_USERAGENT, "MyBot"); curl_setopt($ch, CURLOPT_HTTPHEADER,array('Authorization:xxxx')); curl_setopt($ch, CURLOPT_WRITEFUNCTION, "outputFunc"); curl_exec($ch); function outputFunc($ch, $str){ GLOBAL $isHeader; if($isHeader && strlen($str)==2){ $isHeader=false; return strlen($str); } if($isHeader){ $out=str_replace("\r\n","",$str); header($out); }else{ ob_flush(); echo $str; ob_end_flush(); } return strlen($str); } --



※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 210.60.161.211
※ 文章网址: http://webptt.com/cn.aspx?n=bbs/PHP/M.1399418035.A.75F.html
1F:推 gpmm:嘛,其实你可以自己测一下啊 XD (写 log 这样 05/07 10:30
2F:推 banjmin:只是要播影片的话 为什麽要这样写? 05/07 11:26
3F:→ banjmin:另外 关掉当然会停止 就像把cmd while(1)程式关掉一样 05/07 11:27
4F:→ alog:那是不可能终止的,http request 是单向传输的 05/07 11:41
5F:→ alog:server端不会知道使用者关闭,通常由php or server 程式中断 05/07 11:41
6F:→ alog:你如果把 set_time_limit 设为 0 很有可能程式会一直跑 05/07 11:42
7F:→ alog:除非你server程式分出来的process意外中断都不会断线 05/07 11:43
8F:→ alog:虽然不清楚你要做的东西,不过可以给个小建议 05/07 11:45
9F:→ alog:在这死回圈内加入一段程式码,检查使用者是否还在浏览画面 05/07 11:46
10F:→ alog:如果他跳开了就break 05/07 11:47
11F:→ alog:看你要隔多少时间检查一次..这不难处理 05/07 11:47
12F:推 alog:另一种做法是,系统这里弄个程式挂着,定时处理画面 05/07 11:51
13F:→ alog:把画面输出在伺服器的档案系统上,使用者端只要纯粹看图就可 05/07 11:52
14F:推 Kenqr:用无限回圈的话,这样网页是不是会一直在载入状态? 05/07 12:19
15F:→ Kenqr:图片轮播的部份,感觉从client端用js处理会比较好 05/07 12:20
16F:推 banjmin:我懂了 就像Comet那样 05/07 12:30
17F:→ danny8376:alog server端不见得不知道 要看架构而定 05/07 13:39
18F:→ danny8376:但如果是在没buffer的前提下 因为这PHP一直保持输出 05/07 13:40
19F:→ danny8376:PHP会发现到没人消耗这些资料 所以能知道使用者关闭了 05/07 13:41
20F:→ darkk6:原来~ 我也觉得应该不会停 XD 但测试结果是会停 0.0 05/07 13:42
21F:推 xxxzzz:一般情况,网页关掉,PHP"觉察"到,就会停止了,就如danny所述 05/10 18:47
22F:→ xxxzzz:也才会有ignore_user_abort(),可以让PHP不理会网页关闭, 05/10 18:48
23F:→ xxxzzz:继续执行到完。另外connection_status()也可判断网页关了否 05/10 18:49
24F:→ xxxzzz:http://xyz.cinc.biz/2011/01/php.html 05/10 18:50
25F:→ darkk6:感谢楼上~ 又学到了 :D 05/13 07:42







like.gif 您可能会有兴趣的文章
icon.png[问题/行为] 猫晚上进房间会不会有憋尿问题
icon.pngRe: [闲聊] 选了错误的女孩成为魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一张
icon.png[心得] EMS高领长版毛衣.墨小楼MC1002
icon.png[分享] 丹龙隔热纸GE55+33+22
icon.png[问题] 清洗洗衣机
icon.png[寻物] 窗台下的空间
icon.png[闲聊] 双极の女神1 木魔爵
icon.png[售车] 新竹 1997 march 1297cc 白色 四门
icon.png[讨论] 能从照片感受到摄影者心情吗
icon.png[狂贺] 贺贺贺贺 贺!岛村卯月!总选举NO.1
icon.png[难过] 羡慕白皮肤的女生
icon.png阅读文章
icon.png[黑特]
icon.png[问题] SBK S1安装於安全帽位置
icon.png[分享] 旧woo100绝版开箱!!
icon.pngRe: [无言] 关於小包卫生纸
icon.png[开箱] E5-2683V3 RX480Strix 快睿C1 简单测试
icon.png[心得] 苍の海贼龙 地狱 执行者16PT
icon.png[售车] 1999年Virage iO 1.8EXi
icon.png[心得] 挑战33 LV10 狮子座pt solo
icon.png[闲聊] 手把手教你不被桶之新手主购教学
icon.png[分享] Civic Type R 量产版官方照无预警流出
icon.png[售车] Golf 4 2.0 银色 自排
icon.png[出售] Graco提篮汽座(有底座)2000元诚可议
icon.png[问题] 请问补牙材质掉了还能再补吗?(台中半年内
icon.png[问题] 44th 单曲 生写竟然都给重复的啊啊!
icon.png[心得] 华南红卡/icash 核卡
icon.png[问题] 拔牙矫正这样正常吗
icon.png[赠送] 老莫高业 初业 102年版
icon.png[情报] 三大行动支付 本季掀战火
icon.png[宝宝] 博客来Amos水蜡笔5/1特价五折
icon.pngRe: [心得] 新鲜人一些面试分享
icon.png[心得] 苍の海贼龙 地狱 麒麟25PT
icon.pngRe: [闲聊] (君の名は。雷慎入) 君名二创漫画翻译
icon.pngRe: [闲聊] OGN中场影片:失踪人口局 (英文字幕)
icon.png[问题] 台湾大哥大4G讯号差
icon.png[出售] [全国]全新千寻侘草LED灯, 水草

请输入看板名称,例如:iOS站内搜寻

TOP