Req #65078 [Opn->Csd]: opcache not enabled in embedded sapi / uwsgi

From: Date: Mon, 14 Dec 2015 14:17:42 +0000
Subject: Req #65078 [Opn->Csd]: opcache not enabled in embedded sapi / uwsgi
References: 1  Groups: php.bugs 
Request: Send a blank email to php-bugs+get-197863@lists.php.net to get a copy of this message
Edit report at https://bugs.php.net/bug.php?id=65078&edit=1 ID: 65078 Updated by: rasmus@php.net Reported by: info at icod dot de Summary: opcache not enabled in embedded sapi / uwsgi -Status: Open +Status: Closed Type: Feature/Change Request Package: opcache Operating System: linux 3.9.6 PHP Version: 5.5.0 -Assigned To: +Assigned To: rasmus Block user comment: N Private report: N New Comment: Ok, added uwsgi to the list of supported SAPis in PHP 5.6 and 7. Thanks for verifying that it works. Previous Comments: ------------------------------------------------------------------------ [2015-12-14 12:51:20] matthijs at stdin dot nl I tried patching php to allow opcache to run inside uwsgi, by manually adding "uwsgi" to the list of enabled SAPIs (turns it that it used "uwsgi", not "embed" as I had expected). In any case, with that patch, things seem to run just fine. Performance increases to the expected level (compared with Apache and mod_php) and I haven't found any unexpected behaviour so far. Some tests (looking at phpinfo() generated by different uwsgi workers) suggests that the cache is properly shared between all uwsgi workers too). It's trivial, but here's the patch I'm running with now: --- a/ext/opcache/ZendAccelerator.c +++ b/ext/opcache/ZendAccelerator.c @@ -2434,6 +2434,7 @@ static inline int accel_find_sapi(TSRMLS "apache2filter", "apache2handler", "litespeed", + "uwsgi", NULL }; const char **sapi_name; ------------------------------------------------------------------------ [2015-12-12 11:03:09] matthijs at stdin dot nl The project referenced two comments ago seems to be for enabling the opcache in the CGI and CLI SAPIs, which use a single process invocation for each request, so they need different ways of sharing and storing the cache. However, UWSGI is a framework that uses persistent worker processes, using the embed SAPI. I don't know details about the forking behaviour of UWSGI, and it if fulfills the constraints for a shared OpCache, but even without sharing, caching opcodes within a single worker process would be useful. I guess that always enabling the OpCache for the embed SAPI won't work - it could also be used in an one-off process, or without proper shard memory, etc. So I guess the proper fix for this is to provide an API that an embedding program can use to set up and enable the OpCache? ------------------------------------------------------------------------ [2014-01-28 02:55:36] hittingsmoke at gmail dot com Also getting this on PHP 5.5.8 with uwsgi 2.0. Is this a PHP problem or a uwsgi problem? ------------------------------------------------------------------------ [2013-06-21 21:53:04] sixd@php.net You might want to get involved in this project: http://news.php.net/php.internals/67768 ------------------------------------------------------------------------ [2013-06-21 00:17:02] info at icod dot de Server API uWSGI/php ------------------------------------------------------------------------ The remainder of the comments for this report are too long. To view the rest of the comments, please view the bug report online at https://bugs.php.net/bug.php?id=65078 -- Edit this bug report at https://bugs.php.net/bug.php?id=65078&edit=1

« previous php.bugs (#197863) next »