I reserve X jobs dump them into an array, and never do anything with the job other than read the data. This causes beanstalkd to automatically re-queue the jobs because I never told beanstalkd the work had been processed.

$tube = 'default';
$max = 100;
$run = true;
$res = [];
while( $run && count( $res ) reserveFromTube( $tube, 1 );
$run = $job && $job->getId();
if( $run ) {
$res[] = $job->getData();

If you remove the max checks, you should be able to dump all to the $res array. If max is larger than your queued jobs, it will also grab all.