Laravel队列中的自定义php函数

Laravel队列中的自定义php函数,php,laravel-4,closures,beanstalkd,Php,Laravel 4,Closures,Beanstalkd,我正在使用带有beanstalkd的Laravel队列。我有以下代码: $user_id = Auth::user()->id; Queue::push(function($job) { solve_simplex(); $job->delete(); }); 其中solve_simplex()是我在php中作为扩展添加的自定义函数 作业已排队,但当我要运行php artisan queue:work时,它将以以下结果结束: php artisan queue:wo

我正在使用带有beanstalkd的Laravel队列。我有以下代码:

$user_id = Auth::user()->id;
Queue::push(function($job)
{
    solve_simplex();
    $job->delete();
});
其中solve_simplex()是我在php中作为扩展添加的自定义函数

作业已排队,但当我要运行php artisan queue:work时,它将以以下结果结束:

php artisan queue:work
PHP Fatal error:  Call to undefined function solve_simplex() in /var/www/my_site/vendor/jeremeamia/SuperClosure/src/Jeremeamia/SuperClosure/SerializableClosure.php(99) : eval()'d code on     line 2
PHP Stack trace:
PHP   1. {main}() /var/www/my_site/artisan:0
PHP   2. Symfony\Component\Console\Application->run() /var/www/my_site/artisan:59
PHP   3. Symfony\Component\Console\Application->doRun() /var/www/my_site/vendor/symfony/console/Symfony/Component/Console/Application.php:121
PHP   4. Symfony\Component\Console\Application->doRunCommand() /var/www/my_site/vendor/symfony/console/Symfony/Component/Console/Application.php:191
PHP   5. Illuminate\Console\Command->run() /var/www/my_site/vendor/symfony/console/Symfony/Component/Console/Application.php:887
PHP   6. Symfony\Component\Console\Command\Command->run() /var/www/my_site/vendor/laravel/framework/src/Illuminate/Console/Command.php:96
PHP   7. Illuminate\Console\Command->execute() /var/www/my_site/vendor/symfony/console/Symfony/Component/Console/Command/Command.php:241
PHP   8. Illuminate\Queue\Console\WorkCommand->fire() /var/www/my_site/vendor/laravel/framework/src/Illuminate/Console/Command.php:108
PHP   9. Illuminate\Queue\Worker->pop() /var/www/my_site/vendor/laravel/framework/src/Illuminate/Queue/Console/WorkCommand.php:64
PHP  10. Illuminate\Queue\Worker->process() /var/www/my_site/vendor/laravel/framework/src/Illuminate/Queue/Worker.php:71
PHP  11. Illuminate\Queue\Jobs\BeanstalkdJob->fire() /var/www/my_site/vendor/laravel/framework/src/Illuminate/Queue/Worker.php:119
PHP  12. Illuminate\Queue\Jobs\Job->resolveAndFire() /var/www/my_site/vendor/laravel/framework/src/Illuminate/Queue/Jobs/BeanstalkdJob.php:50
PHP  13. IlluminateQueueClosure->fire() /var/www/my_site/vendor/laravel/framework/src/Illuminate/Queue/Jobs/Job.php:96
PHP  14. Jeremeamia\SuperClosure\SerializableClosure->__invoke() /var/www/my_site/vendor/laravel/framework/src/Illuminate/Queue/IlluminateQueueClosure.php:16
PHP  15. ReflectionFunction->invokeArgs() /var/www/my_site/vendor/jeremeamia/SuperClosure/src/Jeremeamia/SuperClosure/SerializableClosure.php:64
PHP  16. Jeremeamia\SuperClosure\SerializableClosure::{closure:/var/www/my_site/vendor/jeremeamia/SuperClosure/src/Jeremeamia/SuperClosure/SerializableClosure.php(99) : eval()'d code:1-4}() /    var/www/my_site/vendor/jeremeamia/SuperClosure/src/Jeremeamia/SuperClosure/SerializableClosure.php:64
{"error":{"type":"Symfony\\Component\\Debug\\Exception\\FatalErrorException","message":"Call to undefined function solve_simplex()","file":"\/var\/www\/my_site\/vendor\/jeremeamia\/    SuperClosure\/src\/Jeremeamia\/SuperClosure\/SerializableClosure.php(99) : eval()'d code","line":2}}
更新


看起来我的分机没有加载。但它并不仅仅在闭包中加载。如果我在正常的laravel代码中运行函数solve_simpex()(例如在controller中),那么它会工作并加载扩展….

我找到了一个解决方案。问题是通过以下命令调用superclosure:

php artisan队列:工作

它是通过CLI和idk调用的,因此它不加载扩展

使用-d参数运行artisan解决方案:

php-dextension=solveSimplex.so artisan队列:工作

所以我不得不告诉php CLI加载该扩展