PHP7.4 已经有 preload 和 ffi 了?

2020-11-19 14:10:29 +08:00
 liuxu
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
2354 次点击
所在节点    程序员
15 条回复
cccp2020
2020-11-19 14:15:02 +08:00
preload 是 7.4 的重要特性

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

这么复杂我为什么不用 Go ?
liuxu
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
2020-11-19 14:36:59 +08:00
@vus520 golang 调用 c 也是蛮复杂的,ffi 调用很香了
lovecy
2020-11-19 14:53:04 +08:00
@vus520 简单又说开发不了大型程序,复杂又说为啥不用(JAVA, go)
cmdOptionKana
2020-11-19 15:07:11 +08:00
@liuxu golang 可以大量减少调用 C 的需求
liuxu
2020-11-19 15:13:37 +08:00
@cmdOptionKana 所以就没法说到一起去。。又不是不会 golang,只是在讨论 php 有趣的功能而已,v2ex 有谁不知道 golang 性能比 php 好吗。。实在是太无趣了。。
NjcyNzMzNDQ3
2020-11-19 16:45:28 +08:00
packagist 会有更多的 C 语言包了,香起来了
ben1024
2020-11-19 17:00:04 +08:00
这。。。过几天 PHP 8 就出来了
Felldeadbird
2020-11-19 17:00:32 +08:00
没记错,PHP7.4 支持特征,调用 C 的写法 相比起我写 C 不是更快吗?

不过总要有人踏出第一步,后人继续完善。
sunznx
2020-11-19 19:54:13 +08:00
楼上的 某 sb 已 block
CODEWEA
2020-11-20 00:33:23 +08:00
但是 php 在 web 场景下很少会调用 c 吧?有什么场景吗,举个例子。
lideshun123
2020-11-20 10:43:14 +08:00
php 在不断进步,真心感谢这些为 php 添砖加瓦的大佬们,那些杠头们,go 好 java 好你们去用你们的,你只要吃过 php 的饭,在这不好那不好,那就是端起碗吃饭 放下筷子骂娘。语言就是赚钱的工具而已,他好不好在于你怎么用的去赚钱,语言有好坏么?

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/727111

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX