标签: hhvm

PHP引擎是否优化循环中的匿名函数?

我有一个数组存储对单个匿名函数的多个引用:

$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.)

php closures anonymous-function php-internals hhvm

5
推荐指数
1
解决办法
1517
查看次数

在Nginx中使用HHVM fastcgi处理fastcgi_param

通过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)

fastcgi nginx hhvm

5
推荐指数
1
解决办法
637
查看次数

HipHop for PHP,部署应用程序

在谷歌搜索之后,我发现了很多HipHop文档,但是在2011年到2013年之间发布了大量文档.

今年早些时候推出了新版本的HipHop,甚至支持Drupal并包含了很多改进......

我一直使用Zend Guard来部署我的商业应用程序,但现在我开始认真考虑在生产中使用HipHop,但问题出现了:

  • 我们只使用字节码HHBC(没有.php源代码)运行应用程序?

遵循我的研究参考 https://github.com/facebook/hhvm/wiki/FAQ

问题可能看起来非常明显,但在项目文档中找到这个答案并不容易.

提前致谢!

hhvm

5
推荐指数
1
解决办法
1090
查看次数

HHVM + Hacklang:错误/警告输出到浏览器中

有没有办法告诉HHVM将Hacklang警告和错误输出到浏览器中?像PHP这样的东西启用display_errors,display_startup_errorserror_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)

hhvm hacklang

5
推荐指数
1
解决办法
4811
查看次数

nginx - laravel - hhvm-Fastcgi得到错误500

我在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)

php nginx laravel hhvm laravel-4

5
推荐指数
2
解决办法
5904
查看次数

无法加载HHVM扩展(动态)

我正在为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团队看到这篇文章,你能帮帮我吗?

php c++ facebook hhvm

5
推荐指数
1
解决办法
2012
查看次数

运行HHVM和普通Apache服务器

今天早上我开始使用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 apache hhvm

5
推荐指数
1
解决办法
1718
查看次数

hhvm性能类似于PHP 5.5 Ubuntu 14.04

我一定错过了什么.但是我通过运行获得了与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)

php hhvm

5
推荐指数
1
解决办法
1101
查看次数

Phalcon Zephir vs APC vs HHVM Performance

我开始阅读有关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有任何优势.所以我想听听,如果我是对的还是完全错的?

php apache compilation phalcon hhvm

5
推荐指数
1
解决办法
3943
查看次数

Symfony2 HHVM 3.4 Serializer问题

我们正在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配置)

# 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)

serialization json symfony hhvm

5
推荐指数
1
解决办法
249
查看次数