Download the PHP package beaucal/beaucal-long-throttle without Composer
On this page you can find all versions of the php package beaucal/beaucal-long-throttle. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Download beaucal/beaucal-long-throttle
More information about beaucal/beaucal-long-throttle
Files in beaucal/beaucal-long-throttle
Package beaucal-long-throttle
Short Description Prevent an action for some long amount of time. Hours, day, months, years.
License MIT
Homepage https://github.com/BeauCal/beaucal-long-throttle
Informations about the package beaucal-long-throttle
BeaucalLongThrottle
Now with 100% code coverage.
Prevent an action for some amount of time. Hours, day, months, years, anything. Allows for multiple locks (e.g. 100/day) and clearing/releasing a lock just made. And it works just like it should, every single lock lasts exactly how long you specify and is taken atomically.
N.B. This is true/false throttling; this library does not sleep()
;
Installation
-
In
application.config.php
, add as follows: - Import into your database
data/beaucal_throttle.sql
:
To Use
Either you get the lock or you don't.
Allow Multiple Locks
You can allow any number of locks e.g. 'lock1' => 5/hour, 'lock2' => 100/day. Here's how:
Clearing Locks
Lock with APC
For something more quick-n-dirty, use APC locking. This is adequate for short-term throttling with the usual caveats regarding APC persistence (e.g. some other part of your app might flush the entire cache, a PHP restart, out of memory).
N.B. If takeLock()
fails, don't try to sleep()
it out;
that won't work for some reason to do with how apc_add()
works.
Instead, handle the no-lock condition then try again next request.
All versions of beaucal-long-throttle with dependencies
zendframework/zend-db Version ~2.1
zendframework/zend-servicemanager Version ~2.1
zendframework/zend-modulemanager Version ~2.1
zendframework/zend-math Version ~2.1