Swoole 正在准备一个大招 PHP AOT,让任意 PHP 代码直接生成二进制,比如 WordPress ,直接一个命令行 aot ./wordpress -o wd 生成二进制,可以拷贝到任何地方直接./wd 运行

1 天前
 liqinliqin
预计元旦前发布,各位
1805 次点击
所在节点    程序员
31 条回复
Yanlongli
1 天前
额,是不是将整个 php 环境打包、然后将代码打包、再将浏览器打包、然后 润
liqinliqin
1 天前
实际上现在搞的 AOT 实现,是可降级的,是函数级别的,会把一部分 PHP 函数给转成 C++ 函数,遇到混杂 PHP 和 HTML 的模版文件,或者不支持的语法,就还是走 opcode 了,和 swoole compiler 这个是一起运行的
back0893
1 天前
有点鸡肋
不如原来 php ,可以直接修改代码
打包不如换语言
容器化不好么?
hronro
1 天前
按我的理解,JS/PHP/Python/Ruby 这类动态语言,必须要依赖 JIT 才能有可以看的性能,不然性能上就要慢 2 个数量级。要搞 AOT ,除非能支持 PBO ,不然性能能看么?
xgdgsc
1 天前
hronro
1 天前
@xgdgsc 谢谢补充。但 Julia 还是和 PHP 这种古早的动态语言不太一样吧,没有可比性。
CodeCodeStudy
1 天前
Java 的 GraalVM 的 native-image ,还是需要通过 java -agentlib:native-image-agent=config-merge-dir=/path/to/config-dir/将所有的代码跑一遍,收集运行中的反射、序列化、动态代理、资源等信息,然后再进行 native-image 的 AOT 编译。好奇 PHP 是怎么处理动态特性的?
CodeCodeStudy
1 天前
public class Main {

public static void main(String[] args) {
try {
String className = "java.util.Collections";
Class<?> cl = Class.forName(className);
System.out.println(cl.getName());
} catch (Exception e) {
e.printStackTrace();
}

try {
long time = System.currentTimeMillis() / 1000L;
String className = time % 2 == 0 ? "java.util.Base64" : "java.util.Timer";
Class<?> cl = Class.forName(className);
System.out.println(cl.getName());
} catch (Exception e) {
e.printStackTrace();
}

}

}

javac Main.java && native-image Main && ./main

输出
java.util.Collections
java.lang.ClassNotFoundException: java.util.Base64
或者
java.util.Collections
java.lang.ClassNotFoundException: java.util.Timer

需要用到 java -agentlib:native-image-agent=config-merge-dir=./src/main/resources/META-INF/native-image Main 将动态特性收集起来,这里的 java 是指 GraalVM 的 jdk ,然后再 native-image 编译

https://www.graalvm.org/latest/reference-manual/native-image/guides/use-reachability-metadata-repository-maven/

https://www.graalvm.org/latest/reference-manual/native-image/metadata/AutomaticMetadataCollection/
phreej2voo
1 天前
编译打包功能嘿,webman 框架早就支持了!!!
changz
1 天前
生态才是最大的问题,举个例子,你能让 rocketmq 给你 swoole 写个 sdk 么
julyclyde
17 小时 30 分钟前
感觉 swoole 这个名字之下好像产品已经变了好几次了?

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

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

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

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

© 2021 V2EX