我有一个数组存储对单个匿名函数的多个引用:
$fns = array();
//some code
$fn = function(){
echo 'this is closure 12345... < 67890';
// etc etc..
};
for($x=12345; $x<67890; ++$x){
$fns[$x] = $fn;
}
Run Code Online (Sandbox Code Playgroud)
可以看出,我们只创建了一个匿名函数.
如果我们把函数声明放在循环中怎么办?:
$fns = array();
//some code
for($x=12345; $x<67890; ++$x){
$fns[$x] = function(){
echo 'this is closure 12345... < 67890';
// etc etc..
};
}
Run Code Online (Sandbox Code Playgroud)
引擎是否足够智能以识别只需要创建一个对象?
上面的代码是仅创建一个对象还是每次迭代创建一个对象?
(问题针对HHVM和Zend Engine.)
通过fastcgi进入Nginx的HHVM不支持fastcgi_param是否正确?如果是这样,如何解决?
喜欢:
location ~ .php$ { ## Execute PHP scripts
if (!-e $request_filename) { rewrite / /index.php last; }
expires off;
fastcgi_pass 127.0.0.1:9999; <- my hhvm is set to port 9999 io 9000
fastcgi_param PHP_VALUE "error_log=/var/report/PHP.error.log";
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param MAGE_RUN_CODE admin;
fastcgi_param MAGE_RUN_TYPE store;
include fastcgi_params;
}
Run Code Online (Sandbox Code Playgroud) 在谷歌搜索之后,我发现了很多HipHop文档,但是在2011年到2013年之间发布了大量文档.
今年早些时候推出了新版本的HipHop,甚至支持Drupal并包含了很多改进......
我一直使用Zend Guard来部署我的商业应用程序,但现在我开始认真考虑在生产中使用HipHop,但问题出现了:
遵循我的研究参考 https://github.com/facebook/hhvm/wiki/FAQ
问题可能看起来非常明显,但在项目文档中找到这个答案并不容易.
提前致谢!
有没有办法告诉HHVM将Hacklang警告和错误输出到浏览器中?像PHP这样的东西启用display_errors,display_startup_errors并error_reporting设置为E_ALL
HHVM版本:
$ php -v
HipHop VM 3.1.0-dev+2014.04.09 (rel)
Compiler: heads/master-0-g4fc811c64c23a3686f66a2bea80ba47f3eaf9f3d
Repo schema: 79197c935790c0b9c9cb13566c3e727ace368117
Run Code Online (Sandbox Code Playgroud)
我尝试过以下配置:
$ cat /etc/hhvm/php.ini
; php options
display_startup_errors = On
error_reporting = E_ALL
display_errors = On
; hhvm specific
hhvm.log.level = Warning
hhvm.log.always_log_unhandled_exceptions = true
hhvm.log.runtime_error_reporting_level = 8191
hhvm.mysql.typed_results = false
Run Code Online (Sandbox Code Playgroud)
而且:
$ cat /etc/hhvm/server.ini
; php options
pid = /var/run/hhvm/pid
; hhvm specific
hhvm.server.port = 9000
hhvm.server.type = fastcgi
hhvm.server.default_document = index.php
hhvm.log.level = Warning
hhvm.log.always_log_unhandled_exceptions = true …Run Code Online (Sandbox Code Playgroud) 我在ubuntu 12.04 LTS 64 whit HHVM Fastcgi服务中安装LEMP服务器,我通过laravel.phar安装laravel(并通过composer测试)当在brwoser中获取我的网站时不显示任何错误但在Chrome开发人员控制台中获取错误500

我在error.log文件中看不到任何错误(laravel - hhvm,nginx)
存储目录权限是777
我的nginx.conf和vhosts文件有基本配置
当我使用PHP CLI或hhvm命令时,它运行良好
谢谢你的帮助:)
我的位置块
location ~ \.(hh|php)$ {
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_keep_conn on;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
Run Code Online (Sandbox Code Playgroud) 我正在为HHVM编写C++扩展(动态加载).我按照此页面上的说明操作:https: //github.com/facebook/hhvm/wiki/Extension-API
链接到以下示例:https: //github.com/hhvm/extension-example
我在Ubuntu 14.04上编译了hhvm,耗时近2个小时.然后我也编译了示例扩展.
我的问题是,如何加载它?
互联网上的信息似乎已过时或不一致.无论如何,我首先尝试使用以下行创建/etc/hhvm/config.hdf:
DynamicExtensions {
example = /path/to/example.so
}
Run Code Online (Sandbox Code Playgroud)
没啥事儿.然后我看到了这个:来自:http://hhvm.com/blog/4349/hhvm-3-0-0
我们正在从.hdf配置文件转移到.ini.默认值存在于/etc/hhvm/php.ini中.我们还不支持所有旧的选项,所以你现在仍然可以使用config.hdf,但要准备好它在下一个版本中死掉.你最喜欢的所有选项都是从Foo {BarBaz = True}到hhvm.foo.bar_baz = true.
好的,然后我尝试在/etc/hhvm/php.ini或/etc/hhvm/server.ini而不是.hdf中添加行
hhvm.dynamic_extensions.example = /path/to/example.so
但没有运气,没有任何效果.我需要更多信息/文档.
那么,有谁知道会发生什么?或者如果Facebook的HHVM团队看到这篇文章,你能帮帮我吗?
今天早上我开始使用HHVM作为我的默认本地服务器.大多数事情都很好,但我仍然有HHVM尚未完全支持的应用程序.
如果我只能切换端口或目录,那么不是更改配置和重新启动服务,而是更容易.
我的问题:是否可以在一个端口(80)上运行普通的Apache服务器,在另一个端口(8080)上运行HHVM供电的服务器?或者,是否可以仅在特定目录(及其"子目录")中运行HHVM?
在方案1中,切换到HHVM应用程序将如下所示:
localhost/my-project/index.php
localhost:8080/my-project/index.php
Run Code Online (Sandbox Code Playgroud)
在方案2中,切换到HHVM应用程序将如下所示:
localhost/my-project/index.php
localhost/hhvm/my-project/index.php
Run Code Online (Sandbox Code Playgroud)
我猜这可以通过Apache的配置文件来实现,但我不知道配置文件如何自己动手,请帮忙!?
操作系统: Ubuntu 14.04
Apache版本: 2.4.7
HHVM版本: 3.2.0
我一定错过了什么.但是我通过运行获得了与php和hhvm相同的性能
ab -n 100 -c 10 http://127.0.0.1:8080/
php -v返回:
HipHop VM 3.2.0 (rel)
Compiler: tags/HHVM-3.2.0-0-g01228273b8cf709aacbd3df1c51b1e690ecebac8
Repo schema: c52ba40f4a246d35a88f1dfc1daf959851ced8aa`
Run Code Online (Sandbox Code Playgroud)
tail -3 /var/log/nginx/access.log 回报
127.0.0.1 - - [13/Sep/2014:02:46:33 +0300] "GET / HTTP/1.0" 200 116 "-" "ApacheBench/2.3"
127.0.0.1 - - [13/Sep/2014:02:46:33 +0300] "GET / HTTP/1.0" 200 116 "-" "ApacheBench/2.3"
127.0.0.1 - - [13/Sep/2014:02:46:33 +0300] "GET / HTTP/1.0" 200 116 "-" "ApacheBench/2.3"`
Run Code Online (Sandbox Code Playgroud)
nginx conf:
location ~ \.(hh|php)$ {
fastcgi_keep_conn on;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
Run Code Online (Sandbox Code Playgroud)
这是我的/etc/hhvm/php.ini档案:
hhvm.log.level …Run Code Online (Sandbox Code Playgroud) 我开始阅读有关HHVM和Zephir的内容.起初我很兴奋,由于这些技术,性能上升了.但后来我开始问自己一个问题.如果它真的给你这样的性能,就像这种技术的所有者说的那样.
现在我要说,我觉得它看起来怎么样.如果我错了,请纠正我.
Php Script Live Process:运行脚本 - >编译 - >执行脚本
这里显而易见的问题是编译.我们需要在每次启动时编译脚本.
让我假装安装了Apache2,并运行名为"test.php"的php脚本:
APC:
APC打开,APC选项检查更改.它应该是这样的:
运行脚本 - >执行脚本
因为它已经编译到我们的内存并准备使用.
HHVM:
Hip Hop虚拟机,其行为与APC类似.这里的不同之处在于,虚拟机,对于带有APC的标准PHP,它是Zend Engine.所以它是这样的:
运行脚本 - >执行脚本
因为它已经编译(在内存中?)并准备使用.
Zephir:
我将我的脚本编译为C扩展.所以我猜它不需要编译?(我不确定这一点).所以我的php脚本里面的函数现在都是本机的.因此,如果我编写另一个名为"test2.php"的脚本,它将运行我在"test.php"中的本机函数(是的,它应该具有.zep格式,但现在无关紧要).现在使用APC我避免编译过程.
运行脚本 - >执行脚本
现在我很困惑.就你所知,它现在都是一样的.我没有看到使用Zephir和HHVM比标准APC有任何优势.所以我想听听,如果我是对的还是完全错的?
我们正在HHVM上测试我们的Symfony2 API.我们只是在控制器中返回php对象,这些对象将被序列化为Json.
每个对象都有一个配置文件,我们在其中定义要公开的数据.在PHP 5.4/5.5/5.6上,一切运行正常,但在HVVM上,序列化程序忽略了序列化程序配置文件.它只是序列化所有属性.
{
"simple_products":{
"_new": false,
"_deleted": false,
"modified_columns":[],
"virtual_columns":[],
"id": "3556",
"daytime_id": "1",
"name": "Banane",
"value": 123,
"peer": null,
"start_copy": false,
"day_id": "11561",
"created_at": "2015-01-13 17:36:38",
"updated_at": "2015-01-13 17:36:38",
"created_by": "3505",
"updated_by": "3505",
"a_day": null,
"a_daytime": null,
"already_in_save": false,
"already_in_validation": false,
"already_in_clear_all_references_deep": false,
"validation_failures":[]
}
}
Run Code Online (Sandbox Code Playgroud)
而不仅仅是
{
"simple_products":{
"id": "4181",
"daytime_id": "1",
"name": "Banane",
"value": 123
}
}
Run Code Online (Sandbox Code Playgroud)
谁知道该怎么办?如果您需要配置文件,请随时询问.
# jms serializer config
jms_serializer:
property_naming:
lower_case: true
metadata:
cache: file
debug: "%kernel.debug%"
file_cache:
dir: "%kernel.cache_dir%/serializer" …Run Code Online (Sandbox Code Playgroud)