免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: 墨迹哥
打印 上一主题 下一主题

吊丝逆袭PHP扩展Perl(蛋都碎了) [复制链接]

论坛徽章:
30
水瓶座
日期:2014-08-22 21:06:3415-16赛季CBA联赛之新疆
日期:2015-12-19 19:05:48IT运维版块每日发帖之星
日期:2015-12-25 06:20:31IT运维版块每日发帖之星
日期:2015-12-25 06:20:31IT运维版块每日发帖之星
日期:2015-12-25 06:20:3315-16赛季CBA联赛之上海
日期:2016-04-15 19:51:31程序设计版块每日发帖之星
日期:2016-04-17 06:23:29程序设计版块每日发帖之星
日期:2016-04-23 06:20:00程序设计版块每日发帖之星
日期:2016-05-26 06:20:00每日论坛发贴之星
日期:2016-05-26 06:20:0015-16赛季CBA联赛之辽宁
日期:2017-02-16 23:59:4715-16赛季CBA联赛之天津
日期:2019-01-11 01:11:44
31 [报告]
发表于 2013-04-07 09:57 |只看该作者
这个可能要加点Ajax元素到里面了。

论坛徽章:
42
19周年集字徽章-周
日期:2019-10-14 14:35:31平安夜徽章
日期:2015-12-26 00:06:30数据库技术版块每日发帖之星
日期:2015-12-01 06:20:002015亚冠之首尔
日期:2015-11-04 22:25:43IT运维版块每日发帖之星
日期:2015-08-17 06:20:00寅虎
日期:2014-06-04 16:25:27狮子座
日期:2014-05-12 11:00:00辰龙
日期:2013-12-20 17:07:19射手座
日期:2013-10-24 21:01:23CU十二周年纪念徽章
日期:2013-10-24 15:41:34IT运维版块每日发帖之星
日期:2016-01-27 06:20:0015-16赛季CBA联赛之新疆
日期:2016-06-07 14:10:01
32 [报告]
发表于 2013-04-07 10:02 |只看该作者
回复 30# 墨迹哥
1.和exec相比,少fork了一次进程,性能有提高,而且在同一进程内部,控制起来方便.
2.实时输出的问题,这个和perl cgi原理一样,要打开stdout的flush
要试一下是在php里面控制
ob_flush();
flush();
还是perl里面控制, $|=1;


   

论坛徽章:
3
未羊
日期:2013-11-18 15:17:06酉鸡
日期:2013-12-06 17:07:16天蝎座
日期:2014-06-11 12:37:07
33 [报告]
发表于 2013-04-07 10:29 |只看该作者
回复 32# laputa73


    能写出小例子来学习下吗?

论坛徽章:
3
未羊
日期:2013-11-18 15:17:06酉鸡
日期:2013-12-06 17:07:16天蝎座
日期:2014-06-11 12:37:07
34 [报告]
发表于 2013-04-07 10:30 |只看该作者
回复 31# shijiang1130


    就是要异步处理?把数据存在XML?还是存哪去阿?

论坛徽章:
8
巨蟹座
日期:2013-08-12 09:41:40IT运维版块每日发帖之星
日期:2015-12-09 06:20:00寅虎
日期:2013-12-25 14:59:40天秤座
日期:2013-12-06 14:04:55酉鸡
日期:2013-11-28 10:22:22水瓶座
日期:2013-08-26 15:40:54巨蟹座
日期:2013-08-12 09:42:01每日论坛发贴之星
日期:2015-12-09 06:20:00
35 [报告]
发表于 2013-04-07 11:23 |只看该作者
叫一声

论坛徽章:
3
未羊
日期:2013-11-18 15:17:06酉鸡
日期:2013-12-06 17:07:16天蝎座
日期:2014-06-11 12:37:07
36 [报告]
发表于 2013-04-07 11:28 |只看该作者
回复 35# arron刘


    给力。。。我时刻蹲在论坛里面。。。

论坛徽章:
42
19周年集字徽章-周
日期:2019-10-14 14:35:31平安夜徽章
日期:2015-12-26 00:06:30数据库技术版块每日发帖之星
日期:2015-12-01 06:20:002015亚冠之首尔
日期:2015-11-04 22:25:43IT运维版块每日发帖之星
日期:2015-08-17 06:20:00寅虎
日期:2014-06-04 16:25:27狮子座
日期:2014-05-12 11:00:00辰龙
日期:2013-12-20 17:07:19射手座
日期:2013-10-24 21:01:23CU十二周年纪念徽章
日期:2013-10-24 15:41:34IT运维版块每日发帖之星
日期:2016-01-27 06:20:0015-16赛季CBA联赛之新疆
日期:2016-06-07 14:10:01
37 [报告]
发表于 2013-04-07 13:21 |只看该作者
本帖最后由 laputa73 于 2013-04-07 14:06 编辑

给你一个php实时刷新的例子, 你把里面的循环输出部分换成perl看看.
补充set_time_limit(0);不然默认20s后php就超时了.

  1. <?php

  2. header("Cache-Control: no-cache, must-revalidate");
  3. header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
  4. flush();

  5. ?>
  6. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
  7. <html xmlns="http://www.w3.org/1999/xhtml">
  8. <head>
  9.   <title>Comet php backend</title>
  10.   <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  11. </head>
  12. <body>


  13. <?php
  14. set_time_limit(0);
  15. while(1) {

  16.   echo time().'<br>';
  17.   ob_flush();
  18.   flush(); // used to send the echoed data to the client
  19.   sleep(1); // a little break to unload the server CPU
  20. }

  21. ?>


  22. </body>
  23. </html>
复制代码

论坛徽章:
3
未羊
日期:2013-11-18 15:17:06酉鸡
日期:2013-12-06 17:07:16天蝎座
日期:2014-06-11 12:37:07
38 [报告]
发表于 2013-04-07 13:54 |只看该作者
回复 37# laputa73


   没错。就是要这效果!哈哈!我想下怎么融入PERL

论坛徽章:
3
未羊
日期:2013-11-18 15:17:06酉鸡
日期:2013-12-06 17:07:16天蝎座
日期:2014-06-11 12:37:07
39 [报告]
发表于 2013-04-07 14:54 |只看该作者
回复 37# laputa73


    我骚微修改了下~ 不过貌似没想通。。。如果多线程在返回的话,貌似得把程序全部拆开,但是重点是返回值处理的问题。。
  1.     <?php

  2.     header("Cache-Control: no-cache, must-revalidate");
  3.     header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
  4.     flush();

  5.     ?>
  6.     <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
  7.     <html xmlns="http://www.w3.org/1999/xhtml">
  8.     <head>
  9.       <title>Comet php backend</title>
  10.       <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  11.     </head>
  12.     <body>


  13.     <?php

  14.     //ob_start();
  15.     while(1){
  16.         ob_start();
  17.         $perl =new Perl();
  18.         $perl->require('test.pl');
  19.         $perl->test1();
  20.         $out=ob_get_contents();
  21.         ob_flush();
  22.         flush();
  23.         ob_end_clean();
  24.         print "$out\n";
  25.     }
  26. //  print "$out2\n";

  27. //    while(1) {

  28.   //    echo time().'<br>';
  29.    //   ob_flush();
  30.     //  flush(); // used to send the echoed data to the client
  31.    //   sleep(1); // a little break to unload the server CPU
  32. //    }


  33.     ?>


  34.     </body>
  35.     </html>
复制代码
Perl:
  1. #!/usr/bin/perl

  2. sub test1{
  3.     $at='1';
  4.     return $at;

  5. }
  6. sub test2{
  7.     return "false";
  8. }
  9. 1;
复制代码

论坛徽章:
3
未羊
日期:2013-11-18 15:17:06酉鸡
日期:2013-12-06 17:07:16天蝎座
日期:2014-06-11 12:37:07
40 [报告]
发表于 2013-05-15 00:13 |只看该作者
回复 6# shijiang1130


    我在ubuntu12.04 server 版遇到这个跟你一样的错误,你这个错误不是版本的问题,你最后怎么解决的?
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP