Цикл while не работает, если первое значение массива aof неверно php

Я использую serp spider, чтобы проверить, доступен ли прокси. Вот код:

public function checkGoogle(ProxyModel $proxyModel, Keywords_Info $kinfo)
    {
    $pr = Keywords_Info::where('user_id', '=', auth()->user()->id)->get();

foreach ($pr as $user_proxy) {

  if ($user_proxy->google == 'SUCCESS' || $user_proxy->google == 'FAIL')
  {

  }
  else
  {
    do {
      $respo = 'FAIL';
      $proxy_ip = array( '11.11.11.11', '22.22.22.22', '33.33.33.33');
      $proxy_rand = rand(0,2);
      $proxy_ip = $proxy_ip[$proxy_rand];

      $type = 'HTTP';
      $port = 80;
      $puser = 'username';
      $ppass = 'password';
      $proxies = new Proxy($proxy_ip, $port, $puser, $ppass, $type);
      $userAgent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.181 Safari/537.36";
      $browserLanguage = "en";
      $browser = new Browser(new CurlClient(), $userAgent, $browserLanguage);
      $browser->setProxy($proxies);
      $browser->setAcceptLanguage('en');
      $googleClient = new GoogleClient($browser);
      $googleUrl = new GoogleUrl('google.com');

        try {

          $response = $googleClient->query($googleUrl);
          $respo = 'SUCCESS';
          DB::table('keywords_info')->where('user_id', auth()->user()->id)->where('proxy', '=', '-')->update(['proxy' => $proxy_ip]);
          DB::table('keywords_info')->where('user_id', auth()->user()->id)->where('proxy', '=', $proxy_ip)->update(['google' => 'SUCCESS']);
          echo 'success';
          break;

        } catch (\Exception $e) {
          $respo = 'FAIL';
          $respo_items = [
            'user_id' => '1',
            'keywords' => $user_proxy->keywords,
            'proxy' => $proxy_ip,
            'google' => 'FAIL',
            'yahoo' => '-',
            'bing' => '-'
          ];
          Logs::create($respo_items);
          echo 'fail';
        }
    } while ($respo != 'FAIL');


  }



 }



}

Это работает, если первый прокси 11.11.11.11 в порядке, если этот прокси не работает, скрипт прерывается, а цикл не продолжает проверять другой прокси. Цикл разрывается только в том случае, если первый не работает, если другой не работает.

Попробуйте переместить $ proxy_ip = array (.. перед циклом do

user5956451 12.04.2018 18:28

Не работает. Если сначала выбран прокси, который не работает, он всегда будет проверять этот прокси, и есть бесконечный цикл

Maren Maren 12.04.2018 18:39
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
2
41
0

Другие вопросы по теме