-
Notifications
You must be signed in to change notification settings - Fork 326
0 max_execution_time ini value #266
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
0 max_execution_time ini value #266
Conversation
@sodabrew We are currently using PHP 7.0.6. I debugged the extension and indeed it doesn't properly read the value of max_execution_time and sets the lock with 0 TTL. With the change in this PR it successfully retrieves the value for max_execution_time and uses that. I think the best approach would be to also set memcached.sess_lock_expire to a non-0 value by default - to avoid setting 0 TTL locks when even max_exection_time is really 0. The user should intentionally set the value on 0 if he REALLY wants 0 TTL locks. Our problem was that very rarely the requests were failing (like apache2 processes dying for example) and there was no session_write_close() being done - and the lock keys were stuck forever. |
This would be a revert of https://bugs.php.net/bug.php?id=59641 where the same change was made in the other direction. |
@sodabrew I tried to manually pass the string and the length arguments and then I saw that fix and I tired to revert it and it worked. (I have no real experience with PHP extension development - so I'm not of that much help.) |
This smells more of a bug in PHP 7. Passing a nul-terminated string to Oh sweet. It's internally inconsistent: See how these macros are defined? They're explicitly subtracting the length of the final nul byte:
And yet an in-tree extension (SOAP) does this (sizeof includes the nul byte in the length):
|
Given how these are defined,
And how the code clearly is saying that it wants the length of the string without the final nul byte, |
The original ticket https://bugs.php.net/bug.php?id=59641 was resolved by @andreiz maybe he recalls the issue? |
Yup, that's what it looks like - it should've been ZEND_STRL. Maybe some implementation changed in zend_hash. Looks like zlib.output_compression could be affected too. |
@arisro Could I ask you to rebase this to current master, as the php7 branch has merged? |
It seems that zend_ini_long doesn't work anymore with ZEND_STRS and that the extesion should use ZEND_STRL, back again.
@sodabrew Done! :) |
6126efd
to
4272c56
Compare
It seems that zend_ini_long doesn't work anymore with ZEND_STRS
and that the extension should use ZEND_STRL, back again.
We inspected and stumbled upon this issue when some session had their lock stuck. It seems that the extension was unable to retrieve the INI value for max_execution_time.
This was at some point changed to ZEND_STRS - but it seems that now it has to use ZEND_STRL.
Anyone can probably easily test this and confirm that it is indeed an issue and that this fixes it.