以编程方式获取实际的PHP运行时

时间:2014-07-15 14:53:01

标签: php hhvm

我有一个脚本,需要了解它是在HHVM下运行还是在标准Zend引擎下运行。

使用zend_version()输出不同的版本标签 - 对于PHP5为2.5,对于当前的HHVM主机为2.4.99,由于潜在的重叠,我完全不能使用这种方法。

使用phpversion()只给我支持的PHP版本,再次由于潜在的重叠,我不认为这是安全的。

安全地确定脚本执行的运行时间的最佳方法是什么?

1 个答案:

答案 0 :(得分:1)

我可能会建议测试实际行为本身,而不是您正在使用的平台。即使你可以确定你是在运行PHP还是HHVM,一旦PHP或HHVM修复/改变这种行为,你最终都需要知道精确的版本。你可以用例如this GitHub comment中的代码并比较其输出以测试平台所展示的行为类型。

这是可以区分行为的代码:

<?php
function start_elem($parser,$name,$attribs) {
   echo "<$name>";
}
function end_elem($parser,$name)
{
   echo "</$name>";
}

$parser=xml_parser_create();
xml_parser_set_option($parser,XML_OPTION_CASE_FOLDING,0);
xml_set_element_handler($parser,"start_elem","end_elem");
$buf = '<F>';
echo xml_parse($parser,$buf,strlen($buf)==0);

或者,您也可以使用this question的答案,这表示HHVM定义HHVM_VERSION而PHP(显然)没有,因此您可以使用它来确定运行时。