V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
linpf
V2EX  ›  PHP

用 C 写 php 的扩展,跟用任意语言写 DLL 然后在 PHP 里调用,性能差别大么?

  •  
  •   linpf · 2015-04-17 17:21:03 +08:00 · 4621 次点击
    这是一个创建于 3540 天前的主题,其中的信息可能已经有所发展或是发生改变。

    php学到最后肯定是需要学着去自己写C扩展的。但是我又在网上发现了php调用系统环境DLL的方案扩展。这样DLL可以用C#之类的语言来写。我想知道这两种方案的性能差异大吗?

    18 条回复    2015-04-18 19:59:14 +08:00
    whatisnew
        1
    whatisnew  
       2015-04-17 17:25:28 +08:00
    那么我想问 dll 是什么语言写的?还不是 c。。。那么同样都是用 c 写,为什么不直接 ext
    linpf
        2
    linpf  
    OP
       2015-04-17 17:26:57 +08:00
    @whatisnew 我正文里说过了啊。C#写的DLL,就可以用
    linpf
        3
    linpf  
    OP
       2015-04-17 17:29:01 +08:00
    @whatisnew 稍微查了一下,比如VB,C++,C#都可以写dll然后给PHP调用
    fliar
        4
    fliar  
       2015-04-17 17:30:23 +08:00
    首先你確定c#的dll可以直接用?不需要加載mono或者.net framework?
    kaizixyz
        5
    kaizixyz  
       2015-04-17 17:30:32 +08:00
    1楼正解。。
    linpf
        6
    linpf  
    OP
       2015-04-17 17:33:12 +08:00
    @fliar 在windows环境下编译出dll,然后注册到COM环境。PHP调用COM。
    fliar
        7
    fliar  
       2015-04-17 17:36:28 +08:00
    這個事情我在linux下做過,是需要嵌入mono的,windows我沒有弄過幫不了你,不過這個方法我搜到過,我建議你先試下,COM我覺得有點煩就是了
    fliar
        8
    fliar  
       2015-04-17 17:49:24 +08:00
    忘了回歸正題,ext的性能會比dll好,dll沒辦法迴避加載運行時的損耗
    txlty
        9
    txlty  
       2015-04-17 18:43:27 +08:00
    楼主说的是标准COM组件。在WIN系统下,任何语言都可以调用。PHP当然也可以。
    hjc4869
        10
    hjc4869  
       2015-04-17 19:06:08 +08:00
    @fliar C#写COM还是很简单的。。
    linpf
        11
    linpf  
    OP
       2015-04-17 21:14:11 +08:00
    @txlty 性能咋样?会比用原生性能强吗?
    Ghoul2005
        12
    Ghoul2005  
       2015-04-18 01:08:20 +08:00
    前提是你确定你要在win系统下跑PHP么?win系统下还考虑什么性能。
    Actrace
        13
    Actrace  
       2015-04-18 08:01:39 +08:00
    window系统基本不会拿来做服务。。写出来又不能移植到其他系统,有何意义。。
    linpf
        14
    linpf  
    OP
       2015-04-18 10:26:54 +08:00
    @Ghoul2005 win也没那么不堪吧。。
    zhengkai
        15
    zhengkai  
       2015-04-18 13:31:25 +08:00
    win 当然有那么不堪,一个用来打游戏的平台,你用他来工作?没有精通算法你可能不会失业,但是继续用 win 真的是前途堪忧

    而且 PHP 的终点并不是去给 PHP 写扩展(虽然我年轻的时候也这么以为),而是 PHP(或者说后端语言)只是你要考虑的一部分,别太拖后腿就可以了。比方说,Laruence 去了新浪微博后,优化了使用效率,节省了几百台机器,固然了不起,但是新浪微博这么大的量这么多年走下来,主要还是 Tim Yang 的架构做的好啊
    zhengkai
        16
    zhengkai  
       2015-04-18 13:39:56 +08:00
    另外回答正题,PHP 扩展的效率是非常不错的。PHP 之所以能活到现在,也正是因为本身不做太多事情,主要是对各个扩展之间起粘合作用,所以很快你就会发现,从本质上说,PHP 不是语言

    只有 PHP 的库,大部分都是用别的语言写的,这种奇耻大辱是其他语言没有过的
    msg7086
        17
    msg7086  
       2015-04-18 15:56:37 +08:00
    @zhengkai 也不算奇耻大辱吧。PHP脚本开发方便些,ext则是提高运行效率。
    两者结合在一起各自发挥好专长,怎么成耻辱了。
    wizardforcel
        18
    wizardforcel  
       2015-04-18 19:59:14 +08:00 via Android
    @linpf 当然是c语言写的dll效率高啊 这还用想么

    其实要搞粘合剂,最方便的是c#吧。原生支持com,用p/invoke来调用c写的dll。

    扩展有个好处,你以前写的轮子编译成dll拿过来直接用。谁也不想用php再写一遍吧。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2839 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 14:54 · PVG 22:54 · LAX 06:54 · JFK 09:54
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.