How do I save TSRMLS_CACHE for a new thread in PHP7?
| From: | Ruslan Osmanov | Date: | Sun, 22 Nov 2015 06:42:45 +0000 |
| Subject: | How do I save TSRMLS_CACHE for a new thread in PHP7? | ||
| Groups: | php.pecl.dev | ||
| Request: | Send a blank email to pecl-dev+get-13343@lists.php.net to get a copy of this message | ||
Hi,
suppose we are using Zend API in a new thread (created by extension).
The problem that Zend API context(ZEND_TSRMLS_CACHE) is a thread-local
variable.
I'm looking for a way to pass ZEND_TSRMLS_CACHE to my thread. I'm used
to use TSRMLS_FETCH_FROM_CTX(thread_data) and
TSRMLS_SET_CTX(thread_data) in previous PHP versions. Now, in PHP7 they
are not working - _tsrm_ls_cache is equal to zero within thread
function:
(gdb) print _tsrm_ls_cache
void* 0x0
Well, as I've mentioned, I'm aware of that ZEND_TSRMLS_CACHE is a
thread-local variable. Probably, the OS kernel took care of keeping
thread-local data thread-local, and that's why I can't access the
"saved" thread context.
But then how am I supposed to use Zend API working with ZTS in my own
thread?
Thanks.
--
Ruslan Osmanov
Attachment: [application/pgp-signature] signature.asc
Attachment: [application/pgp-signature] signature.asc