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

PHP7.4 已经有 preload 和 ffi 了?

  •  
  •   liuxu · 2020-11-19 14:10:29 +08:00 · 2343 次点击
    这是一个创建于 1469 天前的主题,其中的信息可能已经有所发展或是发生改变。
    https://www.php.net/manual/en/opcache.preloading.php
    https://www.php.net/manual/en/ffi.examples-complete.php

    现在 php 可以直接调用 c 代码了,openresty 的 luajit 调用 c 也是用的 ffi
    15 条回复    2020-11-20 10:43:14 +08:00
    cccp2020
        1
    cccp2020  
       2020-11-19 14:15:02 +08:00   ❤️ 1
    preload 是 7.4 的重要特性

    https://segmentfault.com/a/1190000021234312 发个当年翻译和整理的关于 preload 的文章
    barbery
        2
    barbery  
       2020-11-19 14:21:32 +08:00
    不错,有点意思,以后框架代码不用每次都动态加载了
    liuxu
        3
    liuxu  
    OP
       2020-11-19 14:23:49 +08:00
    重点是还有 ffi,直接用 c 写好代码,然后 ffi 直接调用 c 方法,性能飙升啊
    vus520
        4
    vus520  
       2020-11-19 14:34:03 +08:00
    不好意思,php 进化得他妈都不认识了。

    这么复杂我为什么不用 Go ?
    liuxu
        5
    liuxu  
    OP
       2020-11-19 14:36:06 +08:00
    vagrant@homestead:~/phpffi/helloworld$ ls
    helloworld.c helloworld.php libhelloworld.so
    vagrant@homestead:~/phpffi/helloworld$ cat helloworld.{c,php}
    #include <stdio.h>

    void helloworld()
    {
    printf("hello world!\n");
    }
    <?php

    $ffi = ffi::cdef(
    "void helloworld();",
    "./libhelloworld.so"
    );

    $ffi->helloworld();
    vagrant@homestead:~/phpffi/helloworld$ php helloworld.php
    hello world!
    vagrant@homestead:~/phpffi/helloworld$ php --version
    PHP 7.4.11 (cli) (built: Oct 10 2020 19:44:50) ( NTS )
    Copyright (c) The PHP Group
    Zend Engine v3.4.0, Copyright (c) Zend Technologies
    with Zend OPcache v7.4.11, Copyright (c), by Zend Technologies
    vagrant@homestead:~/phpffi/helloworld$ php -m | grep -i ffi
    FFI
    liuxu
        6
    liuxu  
    OP
       2020-11-19 14:36:59 +08:00
    @vus520 golang 调用 c 也是蛮复杂的,ffi 调用很香了
    lovecy
        7
    lovecy  
       2020-11-19 14:53:04 +08:00   ❤️ 1
    @vus520 简单又说开发不了大型程序,复杂又说为啥不用(JAVA, go)
    cmdOptionKana
        8
    cmdOptionKana  
       2020-11-19 15:07:11 +08:00
    @liuxu golang 可以大量减少调用 C 的需求
    liuxu
        9
    liuxu  
    OP
       2020-11-19 15:13:37 +08:00
    @cmdOptionKana 所以就没法说到一起去。。又不是不会 golang,只是在讨论 php 有趣的功能而已,v2ex 有谁不知道 golang 性能比 php 好吗。。实在是太无趣了。。
    NjcyNzMzNDQ3
        10
    NjcyNzMzNDQ3  
       2020-11-19 16:45:28 +08:00
    packagist 会有更多的 C 语言包了,香起来了
    ben1024
        11
    ben1024  
       2020-11-19 17:00:04 +08:00
    这。。。过几天 PHP 8 就出来了
    Felldeadbird
        12
    Felldeadbird  
       2020-11-19 17:00:32 +08:00
    没记错,PHP7.4 支持特征,调用 C 的写法 相比起我写 C 不是更快吗?

    不过总要有人踏出第一步,后人继续完善。
    sunznx
        13
    sunznx  
       2020-11-19 19:54:13 +08:00
    楼上的 某 sb 已 block
    CODEWEA
        14
    CODEWEA  
       2020-11-20 00:33:23 +08:00
    但是 php 在 web 场景下很少会调用 c 吧?有什么场景吗,举个例子。
    lideshun123
        15
    lideshun123  
       2020-11-20 10:43:14 +08:00
    php 在不断进步,真心感谢这些为 php 添砖加瓦的大佬们,那些杠头们,go 好 java 好你们去用你们的,你只要吃过 php 的饭,在这不好那不好,那就是端起碗吃饭 放下筷子骂娘。语言就是赚钱的工具而已,他好不好在于你怎么用的去赚钱,语言有好坏么?
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1581 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 31ms · UTC 16:57 · PVG 00:57 · LAX 08:57 · JFK 11:57
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.