commit 43422e7c7714cdf63e40b46dddb36fffe32e2367 Author: Emir Buğra Köksalan Date: Mon Jun 29 22:43:57 2020 +0300 first commit diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..0b013ea --- /dev/null +++ b/.gitignore @@ -0,0 +1,11 @@ +/vendor + +composer.phar +composer.lock + +.DS_Store + +/node_modules + +.env + diff --git a/composer.json b/composer.json new file mode 100644 index 0000000..1eff2a9 --- /dev/null +++ b/composer.json @@ -0,0 +1,12 @@ +{ + "name": "emir/beanstalkd-example", + "authors": [ + { + "name": "Emir Buğra Köksalan", + "email": "kodmanyagha@gmail.com" + } + ], + "require": { + "pda/pheanstalk": "^4.0" + } +} diff --git a/producer.php b/producer.php new file mode 100644 index 0000000..4ff8909 --- /dev/null +++ b/producer.php @@ -0,0 +1,33 @@ + $i, 'date' => date('Y-m-d H:i:s'), 'server' => $_SERVER]); + + $pheanstalk + ->useTube('ExampleTube') + ->put($msg); + + echo 'Added: ' . $i . PHP_EOL; + + if (((microtime(true) - $start) * 1000) >= 1000) { + break; + } + +} + +// with some settings +//$pheanstalk +// ->useTube('testtube') +// ->put( +// json_encode(['test' => 'data']), // encode data in payload +// Pheanstalk::DEFAULT_PRIORITY, // default priority +// 30, // delay by 30s +// 60 // beanstalk will retry job after 60s +// ); diff --git a/worker.php b/worker.php new file mode 100644 index 0000000..c8dc4cc --- /dev/null +++ b/worker.php @@ -0,0 +1,34 @@ +watch('ExampleTube'); + +// this hangs until a Job is produced. + +//for($i = 0; $i < 1000; $i++) { +while (true) { + $job = $pheanstalk->reserve(); + try { + $jobPayload = $job->getData(); + $jobPayload = json_decode($jobPayload); + echo date('Y-m-d H:i:s') . ' ' . $jobPayload->id . PHP_EOL; + + //usleep(100); + //sleep(2); + // If it's going to take a long time, periodically + // tell beanstalk we're alive to stop it rescheduling the job. + $pheanstalk->touch($job); + //sleep(2); + + // eventually we're done, delete job. + $pheanstalk->delete($job); + } catch (\Exception $e) { + // handle exception. + // and let some other worker retry. + $pheanstalk->release($job); + } +}