我有一个脚本,需要了解它是在HHVM下运行还是在标准Zend引擎下运行。
使用zend_version()输出不同的版本标签 - 对于PHP5为2.5,对于当前的HHVM主机为2.4.99,由于潜在的重叠,我完全不能使用这种方法。
使用phpversion()只给我支持的PHP版本,再次由于潜在的重叠,我不认为这是安全的。
安全地确定脚本执行的运行时间的最佳方法是什么?
答案 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(显然)没有,因此您可以使用它来确定运行时。