Just ask the database for what we want instead of asking for more
results, sifting through them, and hoping that we get enough
qualifying results to fulfill the request.
Also drop Random::album(), since it's duplicate code and it makes more
sense for this to live in Album.
Can be very efficient with the right input, but probably has
degenerative cases where it increases the size. Worst-case size
increase is one character per ID in the result set, so it shouldn't be
an issue.
String lengths for a large search result that was unstorable before:
serialize: 1991874
json_encode: 756249
cooked: 244
And some with more discontinuity:
serialize: 1772238
json_encode: 674751
cooked: 37950
serialize: 164942
json_encode: 65771
cooked: 25369
bea34c42 fixed one use of is_readable, but Windows users encountering
this issue would still be affected in other cases. This commit fixes
all of the important is_readable calls within Ampache; I'm not going
to hack this into external modules, so if they're broken people will
have to live with it.
http://php.net/manual/en/function.session-set-save-handler.php:
When using objects as session save handlers, it is important
to register the shutdown function with PHP to avoid unexpected
side-effects from the way PHP internally destroys objects on
shutdown and may prevent the write and close from being called.
Typically you should register 'session_write_close' using the
register_shutdown_function() function.
We're not using objects as session save handlers, but some people
(notably, Synology users) seem to be encountering a similar issue
related to the timing of object destruction. Closing the session
earlier in the shutdown process is a perfectly sane thing to do, so
let's do it.
InnoDB's performance is unacceptable out of the box, and there's no
clean way to batch these insertions into transactions, and stuff.
Benchmarks for 1000 inserts:
InnoDB: 54.826
MyISAM: 0.091
InnoDB transaction: 0.159
Fixes GH #14
Include the correct type parameter in the URL and rename the random
type parameter to random_type.
Remove unused parameters from the function call.
Should fix issue #11