标签: hhvm

HHVM性能不佳

我正在评估HipHop-PHP在我们的代码库上的兼容性和性能,但是在启用内置Web服务器的情况下运行时,我的性能非常差.

我有以下样本测试程序来计算Fibonacci序列.

ex3.php:

function fib($n)
{
    if ($n <= 2)
        return 1;
    else
        return fib($n-1) + fib($n-2);
}

$n = 36;
printf("fib(%d) = %d\n", $n, fib($n, 2));
Run Code Online (Sandbox Code Playgroud)

当我使用命令行通过HHVM运行时,我得到了令人印象深刻的结果:

time hhvm -v"Eval.Jit=true" -f ./ex3.php
fib(36) = 14930352

real    0m0.267s
user    0m0.248s
sys     0m0.020s
Run Code Online (Sandbox Code Playgroud)

将其与标准PHP进行比较:

root@hiphop:/www# time php -f ./ex3.php
fib(36) = 14930352

real    0m5.606s
user    0m5.600s
sys     0m0.000s    
Run Code Online (Sandbox Code Playgroud)

但是,当我想在HHVM中启用内置Web服务器时,所有性能提升都会丢失:

hhvm -v"Eval.Jit=true" -m server -p 8000 &
time wget -qSO - http://localhost:8000/ex3.php
  HTTP/1.1 200 OK
  Content-Type: text/html; charset=utf-8
  X-Powered-By: HPHP
  Date: Sat, …
Run Code Online (Sandbox Code Playgroud)

performance hhvm

43
推荐指数
1
解决办法
1万
查看次数

用HHVM编写的代码比使用PHP编写的代码快吗?

我们可以期望通过从HHVM上的PHP过渡到Hack来获得速度提升吗?

我正在考虑强类型参数/返回类型,特别是标量,它允许HHVM在将代码编译为本机代码方面做得更好,或者与使用经典PHP及其混合类型相比,速度增益无关紧要?

php hhvm hacklang

27
推荐指数
1
解决办法
7833
查看次数

如何以编程方式检查是否在HHVM上运行?

我需要在HHVM运行时和传统的PHP运行时上运行给定的包.我的问题:有没有办法以编程方式检查当前环境是否为HHVM?像这样的东西:

<?php
if(running_on_hhvm()) {
    // do hhvm compatible routine
}
else {
    // do normal routine
}
Run Code Online (Sandbox Code Playgroud)

php hhvm

21
推荐指数
1
解决办法
8006
查看次数

你会如何从PHP迁移到Hack?

Facebook推出了一种新的编程语言,它看起来就像是PHP的扩展.他们称之为Hack,它在他们的HHVM引擎上运行.

在看到他们的网站并阅读了一下之后,我想知道从PHPHack的迁移有多么流畅.

让我们围绕已经部署到LEMP或LAMP堆栈的Web应用程序进行讨论.

我的一些初步想法和行动清单包括:

  • 如何在迁移代码库的过程中运行PHP和Hack?
  • 从nginx/Apache迁移到HHVM
  • 迭代迁移代码库

那么,你会怎么做呢?

php hhvm hacklang

21
推荐指数
1
解决办法
5418
查看次数

hhvm-fastcgi + nginx如何让它在浏览器中显示致命错误

我一直在玩HHVM配置文件,我还没有能够向浏览器输出任何致命错误.它显示E_NOTICE和E_WARNING,但是当发生任何E_ERROR时,它会使页面留空,并且错误仅出现在HHVM日志文件中.

有没有办法让它在浏览器中显示?

我的HHVM配置文件如下:

PidFile = /var/run/hhvm/pid

Log {
  Level = Warning
  AlwaysLogUnhandledExceptions = true
  RuntimeErrorReportingLevel = 8191
  UseLogFile = true
  UseSyslog = false
  File = /var/log/hhvm/error.log
  InjectedStackTrace = false
  NativeStackTrace = false
  Access {
    * {
      File = /var/log/hhvm/access.log
      Format = %h %l %u % t \"%r\" %>s %b
    }
  }
}

ErrorHandling {
  CallUserHandlerOnFatals = true
  NoInfiniteLoopDetection = false
  NoInfiniteRecursionDetection = false
  ThrowBadTypeExceptions = false
  ThrowNotices = false
  NoticeFrequency = 1    # 1 out of these many notices to …
Run Code Online (Sandbox Code Playgroud)

hhvm

18
推荐指数
1
解决办法
3860
查看次数

在HHVM中调试?

在HHVM中运行我的PHP脚本时,我看到我可以传递调试主机和调试端口参数,但我似乎无法确切地知道它的作用以及如何使用它.

这些参数是用于调试HHVM本身(或者可能是编译的PHP本身)还是用于调试PHP脚本?也就是说,它是用于调试HHVM的工作方式,还是用于调试,就像我通常使用XDebug一样,比如说?

起初我尝试将它连接到我为XDebug设置的IDE,但这似乎没有做任何事情,所以没有进行疯狂的追逐,我想我会问这里.

什么是HHVM的调试参数,确切地说,我如何使用它们来调试HHVM中的PHP脚本呢?

php debugging xdebug hhvm

14
推荐指数
3
解决办法
7527
查看次数

PHP - 静态类型检查a-la PhpStorm

我是一个强类型语言支持者,但我正在开发一个大型的PHP项目.

我一直在使用PhpStorm,我喜欢你能提供的额外类型提示,并提供以下评论:

/** @var \Payments $payment */

/** @property \Payments $payment */
Run Code Online (Sandbox Code Playgroud)

PhpStorm很棒,因为它在类型不匹配时会给你一些警告.

我想知道是否有可能在PhpStorm之外静态进行这种检查. 有些种类的命令行预编译器将通过代码,也检查这些额外的提示,如果检测到不匹配,显示一些错误.

这是可以用phpcs完成的吗?

我的最终目标是拥有一个自动工具,提醒我类型不匹配.

我甚至考虑转换到HHVM以获得更好的类型提示.但我不相信HHVM尚未投入生产.

理想情况下,在HHVM上开发额外的类型提示会很棒,但是代码不能在我想继续生产的Zend PHP引擎上运行.

任何的想法?

谢谢.

php hhvm

14
推荐指数
2
解决办法
2547
查看次数

安装hhvm后,在apache和fastcgi上使用漂亮的URL

我需要苗条的PHP与漂亮的网址使用.htaccess,没有问题.

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [QSA,L]
Run Code Online (Sandbox Code Playgroud)

现在我使用hhvm,fastcgi使用这个虚拟主机配置运行它.

<VirtualHost *:80>
  ServerName project.dev
  ServerALias www.project.dev
  DocumentRoot /var/www/project
  ProxyPassMatch ^/(.*\.php(/.*)?)$ fcgi://127.0.0.1:9000/var/www/project/$1
  <Directory "/var/www/project">
    AllowOverride All
    Order allow,deny
    Allow from all
  </Directory>
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)

当然,它不会读取.htaccess文件,我想.htaccess在虚拟主机配置中添加配置,但不,它不会工作.

像这样:

<VirtualHost *:80>
  ServerName project.dev
  ServerALias www.project.dev
  DocumentRoot /var/www/project
  ProxyPassMatch ^/(.*\.php(/.*)?)$ fcgi://127.0.0.1:9000/var/www/project/$1
  <Directory "/var/www/project">
    AllowOverride All
    Order allow,deny
    Allow from all
  </Directory>
  RewriteEngine On
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteRule ^ index.php [QSA,L]
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)

php apache .htaccess fastcgi hhvm

14
推荐指数
1
解决办法
1440
查看次数

Nginx PHP失败,大文件上传(超过6 GB)

我有一个非常奇怪的问题,上传超过6GB的大文件.我的过程是这样的:

  1. 文件通过Ajax上传到php脚本.
  2. PHP上传脚本使用$ _FILE并以块的形式复制它,就像这个 tmp位置的答案一样.
  3. 文件的位置存储在db中
  4. cron脚本稍后会将文件上传到s3,再次使用fopen函数和缓冲来保持内存使用率低

我的PHP(HHVM)和NGINX配置都将其配置设置为允许最多16GB的文件,我的测试文件只有8GB.

这是奇怪的部分,ajax 总是会超时.但是文件被成功上传,它被复制到tmp位置,存储在db,s3中的位置等等.但是即使所有执行完成(需要10-15分钟),AJAX也会运行一个小时超时时结束.

什么可能导致服务器不仅仅发送大文件的响应?

服务器端的错误日志也是空的.

php file-upload nginx amazon-s3 hhvm

14
推荐指数
1
解决办法
2万
查看次数

HHVM - FastCGI:性能不佳

我正在尝试从PHP 5.4(使用FPM作为FastCGI和apc)在nginx上迁移到HHVM - FastCGI(也是nginx).

我的应用程序是一个以Slim为框架的广告服务器.广告服务器连接到redis,memcached(用于套接字和http),MySQL,MongoDB(这些端点在HHVM版本中禁用),使用SOAP和beanstalkd连接到Java后端.

该应用程序有一个测试端点,计算一个Fibonacci系列,在请求11之后速度非常棒!

但是......其他终端的基准在hhvm中更糟糕(当然,在请求11之后).

我认为这总是hhvm模式解释器.

一些想法?

谢谢!

环境:

8个处理器和8GB RAM.

$ uname -a
Linux 3.13.0-30-generic #55-Ubuntu SMP Fri Jul 4 21:40:53 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux

$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 14.04 LTS
Release:    14.04
Codename:   trusty
Run Code Online (Sandbox Code Playgroud)

我编译了hhvm,因为我修改了phpredis:

$ hhvm --version
HipHop VM 3.2.0-dev (rel)
Compiler: heads/master-0-gb7802e739a1f16808dd06c57754c1dc77ed80054
Repo schema: acdee0ea91d0b5967c60a0a42f5dbf81433a7821
Run Code Online (Sandbox Code Playgroud)

测试:

斐波纳契测验

PHP

1.1112360954285
Run Code Online (Sandbox Code Playgroud)

HHVM

1.7104048728943
1.7193510532379
1.7104179859161
1.713366985321
1.7120008468628
1.7102618217468
1.7118058204651
1.7113170623779
1.7101211547852
1.7117080688477
1.7127840518951
0.10136723518372
Run Code Online (Sandbox Code Playgroud)

地理定位测试(SOAP) …

php performance hhvm

13
推荐指数
1
解决办法
1018
查看次数