PS:在5.1中的官方文档中好像没有Queue::push(function(){});这种API。
今天我在群里看到一个群友说,找不到db中Queue的变量名,我记得是可以找到的,然后我就去找了。
创建了一个jobs 的mysql table 。
不需要使用队列处理进程(万一刚压入队列中的jobs马上就执行了,就不好玩了)。
然后在routes.php
route::get('queue', function(){
$id = 264;
Queue::push(function($job) use ($id)
{
echo $id;
$job->delete();
});
});
之后就可以在jobs中看到这样的信息了:
default {"job":"IlluminateQueueClosure","data":{"closure":"eyJpdiI6IjBMZ0laSXhlSjc4T1dKbkZ3WVhaZWc9PSIsInZhbHVlIjoiZGdwMW5RbWdVQTQ5eVJGZ051cW56QTRTWkRDUHdUZG9HSjVaUWYxMEZPRzJxOTMzZ2ZOVStFd1RKbG1PcE9rMDZnMjBtYStIcEJuRk1oZkljMm5Lb0tZSm1UWWd3bDB5QmlGbFZ5S0hcL2pidmgzK2ZIZ3p1bTV6NWJlVGx1cFZnVWxTc2lBVFliNVpId0xPd08wdjBZeHVCUW9jcGF5TFQyUkNZWWlhY2lBUCtKZEtpenh4THlHRWtnVnFQbUlFOVdNK2VYbDB6U2JXaVByaFYrNkdcL1FDZllxNDN0Vlp0dHIzSUJKak5LOWxIQkpSSHgyTVFSYzIrT1BpcVpSZDg4cnN6TGc3N3JXaGNucVwvMFVPTEI1T3hwVU5yNldYaUQzVnQzTE9wbEgxaTRyZTRiS0lYbG9PRG9YSHZVRUV0bWJrNHFscDFldk9HNTdPTllkU3BneU9vVXE4RmVDaUw3ZjRXQzYxZnBheUowPSIsIm1hYyI6Ijc5YjdmMGM0OWM3N2FlMTUwNTM5MDdiN2MzZmRkNGU0YWRjY2Q5OGExODI3NGRmYWIyYjE5NmQ5MTVkMTQwYjAifQ=="}} 0 0 1442382262 1442382262
我记得在之前的某一天我如此操作生成这些信息(一样的操作,都是压入到队列中),payload字段不是加密的。
payload字段是被加密的, 我需要解密它,然后我分别查找了一下文件:
\vendor\laravel\framework\src\Illuminate\Queue\Queue.php
\vendor\laravel\framework\src\Illuminate\Queue\QueueServiceProvider.php
\vendor\laravel\framework\src\Illuminate\Queue\IlluminateQueueClosure.php
\vendor\laravel\framework\src\Illuminate\Queue\DatabaseQueue.php
大概就是这几个文件吧, 我发现插入数据前有一步是加密数据,而且使用的EncrypterContract这个接口的继承者来加密的
然后我是用了
dd(unserialize(Crypt::decrypt('eyJpdiI6IjBMZ0laSXhlSjc4T1dKbkZ3WVhaZWc9PSIsInZhbHVlIjoiZGdwMW5RbWdVQTQ5eVJGZ051cW56QTRTWkRDUHdUZG9HSjVaUWYxMEZPRzJxOTMzZ2ZOVStFd1RKbG1PcE9rMDZnMjBtYStIcEJuRk1oZkljMm5Lb0tZSm1UWWd3bDB5QmlGbFZ5S0hcL2pidmgzK2ZIZ3p1bTV6NWJlVGx1cFZnVWxTc2lBVFliNVpId0xPd08wdjBZeHVCUW9jcGF5TFQyUkNZWWlhY2lBUCtKZEtpenh4THlHRWtnVnFQbUlFOVdNK2VYbDB6U2JXaVByaFYrNkdcL1FDZllxNDN0Vlp0dHIzSUJKak5LOWxIQkpSSHgyTVFSYzIrT1BpcVpSZDg4cnN6TGc3N3JXaGNucVwvMFVPTEI1T3hwVU5yNldYaUQzVnQzTE9wbEgxaTRyZTRiS0lYbG9PRG9YSHZVRUV0bWJrNHFscDFldk9HNTdPTllkU3BneU9vVXE4RmVDaUw3ZjRXQzYxZnBheUowPSIsIm1hYyI6Ijc5YjdmMGM0OWM3N2FlMTUwNTM5MDdiN2MzZmRkNGU0YWRjY2Q5OGExODI3NGRmYWIyYjE5NmQ5MTVkMTQwYjAifQ==')));
这种方式解密。
PS:并不懂代码。只是看了部分代码。
PS:打算看laravel源代码,但是太难了。