first commit
This commit is contained in:
commit
43422e7c77
11
.gitignore
vendored
Normal file
11
.gitignore
vendored
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
/vendor
|
||||||
|
|
||||||
|
composer.phar
|
||||||
|
composer.lock
|
||||||
|
|
||||||
|
.DS_Store
|
||||||
|
|
||||||
|
/node_modules
|
||||||
|
|
||||||
|
.env
|
||||||
|
|
12
composer.json
Normal file
12
composer.json
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
{
|
||||||
|
"name": "emir/beanstalkd-example",
|
||||||
|
"authors": [
|
||||||
|
{
|
||||||
|
"name": "Emir Buğra Köksalan",
|
||||||
|
"email": "kodmanyagha@gmail.com"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"require": {
|
||||||
|
"pda/pheanstalk": "^4.0"
|
||||||
|
}
|
||||||
|
}
|
33
producer.php
Normal file
33
producer.php
Normal file
@ -0,0 +1,33 @@
|
|||||||
|
<?php
|
||||||
|
require __DIR__ . '/vendor/autoload.php';
|
||||||
|
|
||||||
|
use Pheanstalk\Pheanstalk;
|
||||||
|
|
||||||
|
$pheanstalk = Pheanstalk::create('127.0.0.1');
|
||||||
|
|
||||||
|
$start = microtime(true);
|
||||||
|
for ($i = 0; $i < 100000; $i++) {
|
||||||
|
$msg = "id: " . $i . ' date: ' . date('Y-m-d H:i:s') . ' ' . json_encode($_SERVER);
|
||||||
|
$msg = json_encode(['id' => $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
|
||||||
|
// );
|
34
worker.php
Normal file
34
worker.php
Normal file
@ -0,0 +1,34 @@
|
|||||||
|
<?php
|
||||||
|
require __DIR__ . '/vendor/autoload.php';
|
||||||
|
use Pheanstalk\Pheanstalk;
|
||||||
|
|
||||||
|
$pheanstalk = Pheanstalk::create('127.0.0.1');
|
||||||
|
|
||||||
|
// we want jobs from 'testtube' only.
|
||||||
|
$pheanstalk->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);
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user