Php 超过了60秒的最长执行时间

Php 超过了60秒的最长执行时间,php,laravel,redis,twilio-api,Php,Laravel,Redis,Twilio Api,我有几张图片想用Twilio发送给WhatsApp号码。我想在所有的图片都被发送后再发送一条短信。在发送图像时,我指定了一个回调,用于获取交付状态并使用redis存储它。在我打电话发送这些图像后,我会检查所有图像的交付状态,如果没有一个图像的状态等于零,我会发送文本消息,否则我会进行检查,直到我得到一个非零的交付状态。然而,我提出的解决方案是超时。我收到此错误-即使图像未发送,Redis的最大执行时间也超过了60秒。请参阅所附图片 这就是我正在做的: Route::get('test', fun

我有几张图片想用Twilio发送给WhatsApp号码。我想在所有的图片都被发送后再发送一条短信。在发送图像时,我指定了一个回调,用于获取交付状态并使用redis存储它。在我打电话发送这些图像后,我会检查所有图像的交付状态,如果没有一个图像的状态等于零,我会发送文本消息,否则我会进行检查,直到我得到一个非零的交付状态。然而,我提出的解决方案是超时。我收到此错误-
即使图像未发送,Redis的最大执行时间也超过了60秒。请参阅所附图片

这就是我正在做的:

Route::get('test', function (){
    $redis = new \Predis\Client();
    $images = \App\ProductImage::where('product_id', 7)->get();

    foreach ($images as$image){
        $imgUrl = url(env('BOT_URL').'/images/'.$image['img_url']);
        $sid[] = \App\Libraries\Utilities::sendMediaMessage('+23xxxxx', '', $imgUrl);
    }
    foreach ($sid as $id){
        $statuses[] = $redis->get($id);
    }

    if(in_array(0, $statuses)){
           $check = \App\Libraries\Utilities::checkIfWhatsAppStatusHasChanged($sid);
        if ($check){
            \App\Libraries\Utilities::sendWhatsAppMessage('+23xxxxx', 'Send message - had to check');
        }
    }else{
        \App\Libraries\Utilities::sendWhatsAppMessage('+23xxxx', 'Send message ');
    }

});
下面是sendMediaMessage方法

 public static function sendMediaMessage($phone, $msg, $mediaUrl){
             try{

            $client = new Client(env('TWILIO_SID'), env('TWILIO_TOKEN'));
            $send = $client->messages->create(
                "whatsapp:".$phone, // Text this number
                array(
                    'from' => "whatsapp:".env('TWILIO_NUMBER'), // From a valid Twilio number
                    'body' => $msg,
                    'mediaUrl' => $mediaUrl,
                    'statusCallback' => url(env('BOT_URL').'/whatsapp-delivery-status')
                )
            );
            //
            if($send != false){
                $message_sid = $send->sid;
                return $message_sid;
            }

        }catch (\Exception $exception){
        }
    }
以下是回调方法-

   public function checkWhatsapDelivery(Request $request)
    {
        $redis = new Client();
        $body = $request->all();
        $messageSid = $body['MessageSid'];
        $MessageStatus = $body['MessageStatus'];
        $status_id = Utilities::getWhatsappMessageStatus($MessageStatus);
        $redis->set($messageSid, $status_id);
    }
下面是getWhatsappMessageStatus方法

 public static function getWhatsappMessageStatus($status){
        switch (strtolower($status)){
            case 'queued':
                $id = 1;
                break;
            case 'failed':
                $id = 2;
                break;
            case 'sent':
                $id = 3;
                break;
            case 'delivered':
                $id = 4;
                break;
            case 'read':
                $id = 5;
                break;
            default:
                $id = 0;
        }
        return $id;
    }
下面是CheckIfWhatsAppStatusAsChanged方法

  public static function checkIfWhatsAppStatusHasChanged($sids){
        $statuses = self::getWhatsAppStatuses($sids);
        if(in_array(0, $statuses)){
            self::checkIfWhatsAppStatusHasChanged($sids);
        }else{
            return true;
        }
    }
下面是GetWhatsAppStatus方法

public static function getWhatsAppStatuses($sids){
        $redis = new \Predis\Client();
        foreach ($sids as $id){
            $statuses[] = $redis->get($id);
        }
        return $statuses;
}

请问我做错了什么?

检查
php.ini
文件,该文件位于
C:\xampp\php\php.ini
(windows)和
opt/lampp/etc/php.ini
linux中。默认情况下,最大执行时间为60秒。因此,您必须增加发送/发布大数据的最大执行时间。

检查此项您可以在此处找到解决方案更好的方法是在
checkWhatsUpdate
回调中发送您的最终消息,这样,主脚本就不需要等待。@levi正是我所做的,现在工作正常。谢谢