小编Mic*_*usa的帖子

即使有延迟,Laravel也会立即处理排队的工作

我目前正在开发关于私人服务器(例如Minecraft服务器)的个人应用程序,并且由于查询服务器需要一些时间,我决定实施排队作业,但是,它们工作不正常,即使在调用时也会立即运行它们被延迟,导致页面请求的大量延迟.

这是我的HomeController的索引(),它调用作业以30秒的延迟更新每个服务器:

public function index()
{
    $servers = Server::all();

    foreach($servers as $server)
    {
       //Job Dispatch
       $job = (new UpdateServer($server->id))->delay(30);
       $this->dispatch($job);
    }
    return view('serverlist.index', compact('servers'));
}
Run Code Online (Sandbox Code Playgroud)

更新服务器的作业类如下:

class UpdateServer extends Job implements SelfHandling, ShouldQueue
{
    use InteractsWithQueue, SerializesModels;
    protected $id;

    public function __construct($id)
    {
       $this->id = $id;
    }

    public function handle(){
       $server = Server::findOrFail($this->id);

       //preparing the packet
       $test = new RAGBuffer();
       $test->addChar('255');
       $test->addChar('1');
       $test->addShort(1 | 8);

       //finding the server
       $serverGame = new RAGServer($server->server_ip);

       //Get server info
       $status = $serverGame->sendPacket($test);

       $server->onlinePlayers = …
Run Code Online (Sandbox Code Playgroud)

jobs laravel-5

26
推荐指数
5
解决办法
1万
查看次数

仅在用户使用Laravel处于活动状态时登录

我目前正在使用我的Laravel应用程序并防止垃圾邮件我决定只有活跃用户才能登录.我正在使用Laravel的登录系统,就像在Laravel的官方网站教程中一样,这是我的表单操作:

<form class="form-horizontal" role="form" method="POST" action="{{ url('/auth/login') }}">
Run Code Online (Sandbox Code Playgroud)

这完全正常,但我想检查用户的活动,如果不活动,它将被重定向到激活页面,否则它将登录.有没有一种简单的方法可以做到这一点,还是我有义务制作新的控制器,路线和更多的验证?谢谢.

编辑:忘记提及我的数据库中有一个"活动"列.

php account login laravel laravel-5

24
推荐指数
5
解决办法
4万
查看次数

使用Laravel 5和Redis检查作业是否已在队列中

我几天前已经实现了一个工作队列,我遇到了重复问题,我目前正在使用Redis并遵循Laravel的官方教程.

在我的情况下,每当有人进入主页,作业被发送到队列,让我们举个例子:

HomeController的 index():

public function index()
{
    if(/*condition*/){
          //UpdateServer being the job
          $this->dispatch(new UpdateServer());
    }
}
Run Code Online (Sandbox Code Playgroud)

由于此任务大约需要10秒钟才能完成,如果在处理任务时对我的主页有n个请求,则队列中将会有更多相同的作业,从而导致我的数据库出现意外结果.

所以我的问题是,有没有办法知道某个工作是否已经在队列中?

queue jobs redis laravel-5

5
推荐指数
2
解决办法
2887
查看次数

使用Laravel 5的Paypal的IPN模拟器

我即将解决这个问题,我正在我的应用程序中实现IPN系统,现在开始使用Paypal的IPN模拟器进行测试.

当我尝试发送IPN模拟时,它只是给出以下错误:

很遗憾,但是有一个HTTP错误.请再试一次.

首先想到的是 - 贝宝的服务已经关闭 - 测试错误,因为如果我创建一个空白页面并向其发送IPN消息http://myDNS.com/blankpage.php就可以发送它.

第二个想法 - 路线问题 - 我认为这也不是问题:

这是我的IPN听众PurchaseController.php:

public function completed()
{
    //FAHIM's Paypal IPN Listener

    $ipn = new PaypalIPNListener();
    $ipn->use_sandbox = true;

    $verified = $ipn->processIpn();

    $report = $ipn->getTextReport();

    Log::info("-----new payment-----");

    Log::info($report);

    if ($verified) {
        if($_POST['address_status'] == 'confirmed'){
            //sucess
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

routes.php:

Route::post('purchase/completed/', array('as' => 'purchase.completed', 'uses' => 'PurchaseController@completed'));
Run Code Online (Sandbox Code Playgroud)

是否存在与IPN Simulator和Laravel相关的已知问题?

先感谢您.

paypal-sandbox paypal-ipn laravel-5

2
推荐指数
1
解决办法
1387
查看次数

标签 统计

laravel-5 ×4

jobs ×2

account ×1

laravel ×1

login ×1

paypal-ipn ×1

paypal-sandbox ×1

php ×1

queue ×1

redis ×1