-
-
Notifications
You must be signed in to change notification settings - Fork 6.9k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
hhvm support #1512
hhvm support #1512
Conversation
Tests are running: https://travis-ci.org/yiisoft/yii2/jobs/15429299 Looks like the main problem is magic |
"minimum-stability": "dev", | ||
"replace": { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Why "replace" is removed?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
because a regex causes composer to crash otherwise. as stated in the PR message, this is for testing only, not ment to merge, not even later. If there are changes needed we can do them in other branch/commit. This is mainly to test whether there is a sense in supporting hhvm or not. Looks quite okay right now.
Open issues:
|
Subscribing as I'm eager to know how this will turn out. |
@DaSourcerer FYI: there is a subscribe button below, so no need for a comment to watch ;-) |
But then I couldn't have stated my genuine interest openly 😏 |
- moved composer to own file - removed coverage from phpunit
just create another file to not fail on hhvm
tried once again. We now have the following issues:
|
migration tool fails on HHVM because of this line - https://github.com/yiisoft/yii2/blob/master/framework/db/mysql/Schema.php#L190. HHVM returns error code int(1146), not string(42S02). if ($previous instanceof \PDOException && ($previous->getCode() == '42S02'||$previous->getCode()==1146)) After that it fails with "Database Exception: Redis error: ERR wrong number of arguments for 'set' command" and also need some inspection =) |
Can you show how to reproduce the issue? Also if behavior between php and hhvm is different you should report that to hhvm. |
@cebe, step by step:
root@debian:/var/www/yii2/basic# php -v
HipHop VM 2.4.0-dev (rel)
Compiler: heads/master-0-gba8b4bf75a1a2461f3f00a4c048aacdb6835accb
Repo schema: e9c960b671eb36e3bd8085a0ed65937eefe140a9 /etc/hhvm/config.hdf: MySQL {
ReadTimeout = 5000
}
EnvVariables {
HPHP_INTERPRETER = 1
}
ServerVariables {
ALPHA_CONSOLE = 1
TFBENV = 16777216
}
ErrorHandling {
NoticeFrequency = 1
WarningFrequency = 1
}
Http {
SlowQueryThreshold = 0
}
ResourceLimit {
SerializationSizeLimit=134217728
SocketDefaultTimeout = 20
}
root@debian:/var/www/yii2/basic# ./yii migrate
Yii Migration Tool (based on Yii v2.0.0-dev)
HipHop Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[42S02] [1146] Table 'cg2_test.tbl_migration' doesn't exist' in :
Stack trace:
#0 /var/www/yii2/basic/vendor/yiisoft/yii2/db/Command.php(397): PDOStatement->execute()
#1 /var/www/yii2/basic/vendor/yiisoft/yii2/db/Command.php(312): yii\db\Command->queryInternal()
#2 /var/www/yii2/basic/vendor/yiisoft/yii2/db/mysql/Schema.php(187): yii\db\Command->queryAll()
#3 /var/www/yii2/basic/vendor/yiisoft/yii2/db/mysql/Schema.php(93): yii\db\mysql\Schema->findColumns()
#4 /var/www/yii2/basic/vendor/yiisoft/yii2/db/Schema.php(110): yii\db\mysql\Schema->loadTableSchema()
#5 /var/www/yii2/basic/vendor/yiisoft/yii2/console/controllers/MigrateController.php(575): yii\db\Schema->getTableSchema()
#6 /var/www/yii2/basic/vendor/yiisoft/yii2/console/controllers/MigrateController.php(614): yii\console\controllers\MigrateController->getMigrationHistory()
#7 /var/www/yii2/basic/vendor/yiisoft/yii2/console/controllers/MigrateController.php(151): yii\console\controllers\MigrateController->getNewMigrations()
#8 (): yii\console\controllers\MigrateController->actionUp()
#9 /var/www/yii2/basic/vendor/yiisoft/yii2/base/InlineAction.php(53): call_user_func_array()
#10 /var/www/yii2/basic/vendor/yiisoft/yii2/base/Controller.php(130): yii\base\InlineAction->runWithParams()
#11 /var/www/yii2/basic/vendor/yiisoft/yii2/console/Controller.php(77): yii\base\Controller->runAction()
#12 /var/www/yii2/basic/vendor/yiisoft/yii2/base/Module.php(586): yii\console\Controller->runAction()
#13 /var/www/yii2/basic/vendor/yiisoft/yii2/console/Application.php(131): yii\base\Module->runAction()
#14 /var/www/yii2/basic/vendor/yiisoft/yii2/console/Application.php(99): yii\console\Application->runAction()
#15 /var/www/yii2/basic/vendor/yiisoft/yii2/base/Application.php(289): yii\console\Application->handleRequest()
#16 /var/www/yii2/basic/yii(22): yii\base\Application->run()
#17 {main}
Next exception 'yii\db\Exception' with message 'SQLSTATE[42S02] [1146] Table 'cg2_test.tbl_migration' doesn't exist
The SQL being executed was: SHOW FULL COLUMNS FROM `tbl_migration`' in /var/www/yii2/basic/vendor/yiisoft/yii2/db/Command.php:424
Stack trace:
#0 /var/www/yii2/basic/vendor/yiisoft/yii2/db/Command.php(312): yii\db\Command->queryInternal()
#1 /var/www/yii2/basic/vendor/yiisoft/yii2/db/mysql/Schema.php(187): yii\db\Command->queryAll()
#2 /var/www/yii2/basic/vendor/yiisoft/yii2/db/mysql/Schema.php(93): yii\db\mysql\Schema->findColumns()
#3 /var/www/yii2/basic/vendor/yiisoft/yii2/db/Schema.php(110): yii\db\mysql\Schema->loadTableSchema()
#4 /var/www/yii2/basic/vendor/yiisoft/yii2/console/controllers/MigrateController.php(575): yii\db\Schema->getTableSchema()
#5 /var/www/yii2/basic/vendor/yiisoft/yii2/console/controllers/MigrateController.php(614): yii\console\controllers\MigrateController->getMigrationHistory()
#6 /var/www/yii2/basic/vendor/yiisoft/yii2/console/controllers/MigrateController.php(151): yii\console\controllers\MigrateController->getNewMigrations()
#7 (): yii\console\controllers\MigrateController->actionUp()
#8 /var/www/yii2/basic/vendor/yiisoft/yii2/base/InlineAction.php(53): call_user_func_array()
#9 /var/www/yii2/basic/vendor/yiisoft/yii2/base/Controller.php(130): yii\base\InlineAction->runWithParams()
#10 /var/www/yii2/basic/vendor/yiisoft/yii2/console/Controller.php(77): yii\base\Controller->runAction()
#11 /var/www/yii2/basic/vendor/yiisoft/yii2/base/Module.php(586): yii\console\Controller->runAction()
#12 /var/www/yii2/basic/vendor/yiisoft/yii2/console/Application.php(131): yii\base\Module->runAction()
#13 /var/www/yii2/basic/vendor/yiisoft/yii2/console/Application.php(99): yii\console\Application->runAction()
#14 /var/www/yii2/basic/vendor/yiisoft/yii2/base/Application.php(289): yii\console\Application->handleRequest()
#15 /var/www/yii2/basic/yii(22): yii\base\Application->run()
#16 {main}
exception 'PDOException' with message 'SQLSTATE[42S02] [1146] Table 'cg2_test.tbl_migration' doesn't exist' in :
Stack trace:
#0 /var/www/yii2/basic/vendor/yiisoft/yii2/db/Command.php(397): PDOStatement->execute()
#1 /var/www/yii2/basic/vendor/yiisoft/yii2/db/Command.php(312): yii\db\Command->queryInternal()
#2 /var/www/yii2/basic/vendor/yiisoft/yii2/db/mysql/Schema.php(187): yii\db\Command->queryAll()
#3 /var/www/yii2/basic/vendor/yiisoft/yii2/db/mysql/Schema.php(93): yii\db\mysql\Schema->findColumns()
#4 /var/www/yii2/basic/vendor/yiisoft/yii2/db/Schema.php(110): yii\db\mysql\Schema->loadTableSchema()
#5 /var/www/yii2/basic/vendor/yiisoft/yii2/console/controllers/MigrateController.php(575): yii\db\Schema->getTableSchema()
#6 /var/www/yii2/basic/vendor/yiisoft/yii2/console/controllers/MigrateController.php(614): yii\console\controllers\MigrateController->getMigrationHistory()
#7 /var/www/yii2/basic/vendor/yiisoft/yii2/console/controllers/MigrateController.php(151): yii\console\controllers\MigrateController->getNewMigrations()
#8 (): yii\console\controllers\MigrateController->actionUp()
#9 /var/www/yii2/basic/vendor/yiisoft/yii2/base/InlineAction.php(53): call_user_func_array()
#10 /var/www/yii2/basic/vendor/yiisoft/yii2/base/Controller.php(130): yii\base\InlineAction->runWithParams()
#11 /var/www/yii2/basic/vendor/yiisoft/yii2/console/Controller.php(77): yii\base\Controller->runAction()
#12 /var/www/yii2/basic/vendor/yiisoft/yii2/base/Module.php(586): yii\console\Controller->runAction()
#13 /var/www/yii2/basic/vendor/yiisoft/yii2/console/Application.php(131): yii\base\Module->runAction()
#14 /var/www/yii2/basic/vendor/yiisoft/yii2/console/Application.php(99): yii\console\Application->runAction()
#15 /var/www/yii2/basic/vendor/yiisoft/yii2/base/Application.php(289): yii\console\Application->handleRequest()
#16 /var/www/yii2/basic/yii(22): yii\base\Application->run()
#17 {main}
Next exception 'yii\db\Exception' with message 'SQLSTATE[42S02] [1146] Table 'cg2_test.tbl_migration' doesn't exist
The SQL being executed was: SHOW FULL COLUMNS FROM `tbl_migration`' in /var/www/yii2/basic/vendor/yiisoft/yii2/db/Command.php:424
Stack trace:
#0 /var/www/yii2/basic/vendor/yiisoft/yii2/db/Command.php(312): yii\db\Command->queryInternal()
#1 /var/www/yii2/basic/vendor/yiisoft/yii2/db/mysql/Schema.php(187): yii\db\Command->queryAll()
#2 /var/www/yii2/basic/vendor/yiisoft/yii2/db/mysql/Schema.php(93): yii\db\mysql\Schema->findColumns()
#3 /var/www/yii2/basic/vendor/yiisoft/yii2/db/Schema.php(110): yii\db\mysql\Schema->loadTableSchema()
#4 /var/www/yii2/basic/vendor/yiisoft/yii2/console/controllers/MigrateController.php(575): yii\db\Schema->getTableSchema()
#5 /var/www/yii2/basic/vendor/yiisoft/yii2/console/controllers/MigrateController.php(614): yii\console\controllers\MigrateController->getMigrationHistory()
#6 /var/www/yii2/basic/vendor/yiisoft/yii2/console/controllers/MigrateController.php(151): yii\console\controllers\MigrateController->getNewMigrations()
#7 (): yii\console\controllers\MigrateController->actionUp()
#8 /var/www/yii2/basic/vendor/yiisoft/yii2/base/InlineAction.php(53): call_user_func_array()
#9 /var/www/yii2/basic/vendor/yiisoft/yii2/base/Controller.php(130): yii\base\InlineAction->runWithParams()
#10 /var/www/yii2/basic/vendor/yiisoft/yii2/console/Controller.php(77): yii\base\Controller->runAction()
#11 /var/www/yii2/basic/vendor/yiisoft/yii2/base/Module.php(586): yii\console\Controller->runAction()
#12 /var/www/yii2/basic/vendor/yiisoft/yii2/console/Application.php(131): yii\base\Module->runAction()
#13 /var/www/yii2/basic/vendor/yiisoft/yii2/console/Application.php(99): yii\console\Application->runAction()
#14 /var/www/yii2/basic/vendor/yiisoft/yii2/base/Application.php(289): yii\console\Application->handleRequest()
#15 /var/www/yii2/basic/yii(22): yii\base\Application->run()
#16 {main} |
To see difference this script can be used: try {
$db = new PDO("mysql:host=localhost;dbname=db", 'login', 'password');
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$res = $db->query('SHOW FULL COLUMNS FROM `tbl_migration`');
} catch (PDOException $e) {
var_dump($e->getCode());
} Try on php: root@debian:/var/www/cg2# php -v
PHP 5.5.7-2 (cli) (built: Dec 12 2013 23:06:38)
Copyright (c) 1997-2013 The PHP Group
Zend Engine v2.5.0, Copyright (c) 1998-2013 Zend Technologies
with Zend OPcache v7.0.3-dev, Copyright (c) 1999-2013, by Zend Technologies
root@debian:/var/www/cg2# php hhvm-pdo.php
string(5) "42S02"
Try on hhvm: root@debian:/var/www/cg2# php -v
HipHop VM 2.4.0-dev (rel)
Compiler: heads/master-0-gba8b4bf75a1a2461f3f00a4c048aacdb6835accb
Repo schema: e9c960b671eb36e3bd8085a0ed65937eefe140a9
root@debian:/var/www/cg2# php hhvm-pdo.php
int(1146) |
I found this in hhvm tracker - facebook/hhvm#1498 (comment) |
Also, redis cache fails when expiration time != 0 require(__DIR__ . '/vendor/autoload.php');
require(__DIR__ . '/vendor/yiisoft/yii2/Yii.php');
$config = yii\helpers\ArrayHelper::merge(
require(__DIR__ . '/console/config/main.php'),
require(__DIR__ . '/console/config/main-test.php')
);
$application = new yii\console\Application($config);
\Yii::$app->cache->set("hhvmtest", "123");
try {
\Yii::$app->cache->set("hhvmtest2", "456", 1);
} catch (\yii\base\Exception $ex) {
echo $ex->getMessage() . "\n";
}
var_dump(\Yii::$app->cache->get('hhvmtest'));
var_dump(\Yii::$app->cache->get('hhvmtest2')); PHP: root@debian:/var/www/cg2# php -v
PHP 5.5.7-2 (cli) (built: Dec 12 2013 23:06:38)
Copyright (c) 1997-2013 The PHP Group
Zend Engine v2.5.0, Copyright (c) 1998-2013 Zend Technologies
with Zend OPcache v7.0.3-dev, Copyright (c) 1999-2013, by Zend Technologies
root@debian:/var/www/cg2# php hhvm-redis.php
string(3) "123"
string(3) "456" HHVM: root@debian:/var/www/cg2# php -v
HipHop VM 2.4.0-dev (rel)
Compiler: heads/master-0-gba8b4bf75a1a2461f3f00a4c048aacdb6835accb
Repo schema: e9c960b671eb36e3bd8085a0ed65937eefe140a9
root@debian:/var/www/cg2# php hhvm-redis.php
Redis error: ERR wrong number of arguments for 'set' command
Redis command was: SET hhvmtest2 a:2:{i:0;s:3:"456";i:1;N;} PX 1000
string(3) "123"
bool(false) |
Hm, redis problem solved by upgrading redis-server from 2.4.14 (wheezy stable) to 2.8.3 (dotdeb). Added: redis/redis-rb#372 (comment) |
* master: (870 commits) added `yiisoft/yii2-coding-standards` to yii2-dev suggested packages Removed unused variables Removed unused namespace imports Removed unused assignment support panel hiding. further improved custom panel setting. CS fix. tests improved code fix Added support to disable a debug panel. tests improved docs added updated elasticsearch querybuilder test to use yiitest index Fix typo Fixes yiisoft#2346: ActiveQuery used in building sub-query should not need to set FROM clause explicitly. Update FixtureController.php reverting Fixes yiisoft#2310 The scripts in asset bundles are now registered in `View` at the end of `endBody()`. It was done in `endPage()` previously doc improvement [skip ci] ... Conflicts: .travis.yml
closing this as builds are now running and status is tracked in #1511 |
fixes #1511