免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12345下一页
最近访问板块 发新帖
查看: 7087 | 回复: 40
打印 上一主题 下一主题

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

论坛徽章:
3
未羊
日期:2013-11-18 15:17:06酉鸡
日期:2013-12-06 17:07:16天蝎座
日期:2014-06-11 12:37:07
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2013-04-06 18:59 |只看该作者 |正序浏览
经历无比痛苦的折磨,让我意志高昂。PHP板块果然是你妹的冷板凳模块。。
他妹的,发了帖子光一堆人看,都木有人回的。一瞬间心情犹如蛋碎一般。
更让人无比蛋疼的事,就是这个无比让人无奈的扩展模块,折腾到昨晚2点多,
这耗时2天多的玩意终于装上了,现在考虑的是如何使用该模块。问题随之又来了。
看了网上的一些介绍,瞬间感觉鸭梨山大。故此发出来和大伙揣摩揣摩。
首先说,偶这不是伸手党的帖子,是交流~!是交流。。。
别看了不回复,哪怕你叫几声,起码你存在阿!我的神阿!~~

代码No1如下:
  1. <?php
  2.   $perl = new Perl();
  3.   $perl->eval('use Digest::MD5');//load perl class MD5
  4.   echo $perl->{'Digest::MD5::md5_hex'}('perl2php');
  5.   var_dump($perl->md5_hex(“Hello”));
  6.   $perl->eval('require "TEST.pm";');//load a perl class file
  7.   echo $perl->eval($x.'+'.$y.';'); // caculate and print the result of x+y
  8.   $perl->eval('$z='.$x.'+'.$y.';');
  9.   echo $z;
  10.   $perl->eval(‘
  11.         sub sum{
  12.           my $x = shif(@_);
  13.           foreach my $y (@_){
  14.             $total + =$y;
  15.           }
  16.           return $total
  17.         }
  18.         ’);
  19.   echo $perl->eval(“sum(1,2,3,4)”).”.”;
  20. ?>
复制代码
我无比的不理解传值的过程。
例如我的程序中使用了getopts这个模块的话,该如何传值?
在网上找了段代码分析了下
代码NO2如下:
  1. <?php
  2.     //启动对象
  3.     ob_start();
  4.     //创建Perl对象
  5.     $perl = new Perl();
  6.     //执行Perl脚本
  7.     $perl->require("test.pl");
  8.     //接收数据
  9.     $out = ob_get_contents();
  10.     //清空缓存
  11.     ob_end_clean();
  12.     //打印输出
  13.     print "Perl: $out";

  14. ?>
复制代码
这段代码基本上实现了脚本的运行,和exec()的运行结果无疑~
一瞬间不明白这区别在哪。。

我说说我想要的效果把:

例如:
  1. exec('perl test.pl -h localhost -p 100');
复制代码
这样的情况,在代码NO2的中该怎么把参数写入呢?求科普!求解答!

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


    没事了。。估计官方的包坏了。我换个就好了

论坛徽章:
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 版遇到这个跟你一样的错误,你这个错误不是版本的问题,你最后怎么解决的?

论坛徽章:
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
38 [报告]
发表于 2013-04-07 13:54 |只看该作者
回复 37# laputa73


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

论坛徽章:
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
36 [报告]
发表于 2013-04-07 11:28 |只看该作者
回复 35# arron刘


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

论坛徽章:
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
34 [报告]
发表于 2013-04-07 10:30 |只看该作者
回复 31# shijiang1130


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

论坛徽章:
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


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

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP