 <blockquote> <pre><code>$bucket-&gt;bootstrap(3); </code></pre> </blockquote> <p><a href="http://bandwidth-throttle.github.io/token-bucket/api/class-bandwidthThrottle.tokenBucket.TokenBucket.html#_bootstrap" rel="nofollow"><code>TokenBucket::bootstrap(3)</code></a> puts three initial tokens into the bucket. Those initial tokens can be consumed instantly. You effectively don't throttle the rate for those first calls.</p> <p>If you don't want that initial burst, you did correctly bootstrap without any tokens.</p> <blockquote> <pre><code>03.05.2016 14:33:34.913 03.05.2016 14:33:35.245 03.05.2016 14:33:35.578 03.05.2016 14:33:35.911 </code></pre> <p>but it is still more than 3 per second.</p> </blockquote> <p>I count 3 per second. Please tolerate this observed variance of ±1ms. In the long run you'll get in average 3 per second.</p> <p>This ±1ms comes probably from <a href="https://github.com/bandwidth-throttle/token-bucket/blob/0.4/classes/BlockingConsumer.php#L56" rel="nofollow">this implementation detail</a> of <code>BlockingConsumer</code>:</p> <pre><code>// sleep at least 1 millisecond. usleep(max(1000, $seconds * 1000000)); </code></pre>