Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Переменная онлайн
Форумы портала PHP.SU » » Вопросы новичков » Переменная онлайн

Страниц (2): [1] 2 »
 

1. Кубик - 06 Марта, 2017 - 16:29:19 - перейти к сообщению
Как сделать повтор кода, пока $geim[8] которая меняется на странице онлайн, не станет равна нужному мне значению $ge = '0:0'

PHP:
скопировать код в буфер обмена
  1.  
  2.  
  3. preg_match('#<div style=(.*?)><a href=(.*?)><span class=(.*?)></span></a></div><br><font class=txtmed  style=(.*?)>(.*) ((.*)) (.*)</font></b></font></div>#',$text0,$geim);
  4.         $ge = '0:0';
  5.  
  6.  
2. Кубик - 06 Марта, 2017 - 19:19:35 - перейти к сообщению
так, только цикл не останавливается когда $ge = $geim[8], почему ?

PHP:
скопировать код в буфер обмена
  1.  
  2.  
  3. for ($i = 0; $ge = $geim[8]; $i++)
  4.             {
  5.             $ch0 = curl_init($sobt[0]);
  6.             curl_setopt($ch0, CURLOPT_HEADER, true);
  7.             curl_setopt($ch0, CURLOPT_RETURNTRANSFER, true);
  8.             curl_setopt($ch0, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 6.3; WOW64; Trident/7.0; rv:11.0) like Gecko');
  9.             $text0 = curl_exec($ch0);
  10.             curl_close($ch0);
  11.             preg_match('#<div style=(.*?)><a href=(.*?)><span class=(.*?)></span></a></div><br><font class=txtmed  style=(.*?)>(.*) ((.*)) (.*)</font></b></font></div>#',$text0,$geim);
  12.             //alert($geim[8]);
  13.             }
  14.  
  15.  
3. Кубик - 06 Марта, 2017 - 21:45:42 - перейти к сообщению
вернее, мне нужен цикл while.
сначала работал, потом перестал


PHP:
скопировать код в буфер обмена
  1.  
  2.  
  3.             $ge = '0:0';
  4.             while ($ge = $geim[8])
  5.                 {
  6.                 $ch0 = curl_init($sobt[0]);
  7.                 curl_setopt($ch0, CURLOPT_HEADER, true);
  8.                 curl_setopt($ch0, CURLOPT_RETURNTRANSFER, true);
  9.                 curl_setopt($ch0, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 6.3; WOW64; Trident/7.0; rv:11.0) like Gecko');
  10.                 $text0 = curl_exec($ch0);
  11.                 curl_close($ch0);
  12.                 preg_match('#<div style=(.*?)><a href=(.*?)><span class=(.*?)></span></a></div><br><font class=txtmed  style=(.*?)>(.*) ((.*)) (.*)</font></b></font></div>#',$text0,$geim);
  13.                 $ge++;
  14.                 //alert($geim[8]);
  15.                 }
  16.  
  17.  
4. Строитель - 06 Марта, 2017 - 21:54:01 - перейти к сообщению
Кубик, чем дальше, тем всё менее понятно, что же вам требуется получить в итоге?
Кубик пишет:
Как сделать повтор кода, пока $geim[8] которая меняется на странице онлайн, не станет равна нужному мне значению $ge = '0:0'
Можно написать рекурсивную функцию, которая будет вызываться до момента, когда $ge станет равна нулю. Или что вам нужно?
5. Кубик - 06 Марта, 2017 - 21:58:28 - перейти к сообщению
исполнить код дальше, только тогда, когда $geim[8] (меняется на странице онлайн) будет равна постоянной $ge = '0:0';
6. Строитель - 06 Марта, 2017 - 22:37:53 - перейти к сообщению
Кубик пишет:
исполнить код дальше, только тогда, когда $geim[8] (меняется на странице онлайн) будет равна постоянной $ge = '0:0';
Ну вот вам пример
Спойлер (Отобразить)
7. Кубик - 06 Марта, 2017 - 23:05:56 - перейти к сообщению
Выдаёт;

Uncaught Error: Call to undefined function app\forms\repeatProcess() in res://app/forms/MainForm.php on line 75, position 22

А из моего примера не получится ?

PHP:
скопировать код в буфер обмена
  1.  
  2.  
  3. if ($geim[8] != $ge)
  4.             {
  5.             while ($ge = $geim[8])
  6.                 {
  7.                 $ch0 = curl_init($sobt[0]);
  8.                 curl_setopt($ch0, CURLOPT_HEADER, true);
  9.                 curl_setopt($ch0, CURLOPT_RETURNTRANSFER, true);
  10.                 curl_setopt($ch0, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 6.3; WOW64; Trident/7.0; rv:11.0) like Gecko');
  11.                 $text0 = curl_exec($ch0);
  12.                 curl_close($ch0);
  13.                 preg_match('#<div style=(.*?)><a href=(.*?)><span class=(.*?)></span></a></div><br><font class=txtmed  style=(.*?)>(.*) ((.*)) (.*)</font></b></font></div>#',$text0,$geim);
  14.                 $ge++;
  15.                 //alert($geim[8]);
  16.                 }
  17.             }
  18.  
  19.  
8. Строитель - 06 Марта, 2017 - 23:15:29 - перейти к сообщению
Кубик пишет:
Call to undefined function app\forms\repeatProcess()
Похоже что вы код не полностью скопировали.
Кубик пишет:
А из моего примера не получится ?
А какие значения в переменных $geim[8] и $ge ?
9. Кубик - 06 Марта, 2017 - 23:24:21 - перейти к сообщению
<pre>string(3) "0:0"
</pre><pre>string(4) "0:15"
(Добавление)
код не весь
10. Строитель - 06 Марта, 2017 - 23:42:07 - перейти к сообщению
Кубик, теоретически вроде бы так должно работать (проверить не на чём)
Спойлер (Отобразить)
В результат работы функции я включил массив из preg_match() $geim. Или нужна переменная $text0 ?
11. Кубик - 06 Марта, 2017 - 23:53:28 - перейти к сообщению
да, там массив ссылок
12. Строитель - 06 Марта, 2017 - 23:56:58 - перейти к сообщению
Кубик пишет:
да, там массив ссылок
Ну тогда надо в строке $ch0 = curl_init($sobt[0]); менять ключи массива на каждой итерации. Сейчас попробую переписать код.
(Добавление)
Спойлер (Отобразить)
13. Кубик - 07 Марта, 2017 - 00:08:59 - перейти к сообщению
сейчас проверю а тот ошибку выдал;

Uncaught Error: Call to undefined function app\forms\repeatProcess() in res://app/forms/MainForm.php on line 71, position 18
14. Строитель - 07 Марта, 2017 - 00:18:20 - перейти к сообщению
Кубик пишет:
сейчас проверю а тот ошибку выдал;

Uncaught Error: Call to undefined function app\forms\repeatProcess()
Я выше уже писал об этой ошибке. Могу только добавить, что описание функции должно быть прописано в пространстве app\forms\.
15. Кубик - 07 Марта, 2017 - 00:36:15 - перейти к сообщению
не заработало, понятно, спасибо
(Добавление)
добил свой пример, работает как надо, только проблема в запросах, 2,3 запроса в секунду за 10 минут будет слишком много.

как можно притормозить цикл ?


PHP:
скопировать код в буфер обмена
  1.  
  2.  
  3. if ($geim[8] != '0:0')
  4.             {
  5.             while ($geim[8] != '0:0')
  6.                 {
  7.                 $ch0 = curl_init($sobt[0]);
  8.                 curl_setopt($ch0, CURLOPT_HEADER, true);
  9.                 curl_setopt($ch0, CURLOPT_RETURNTRANSFER, true);
  10.                 curl_setopt($ch0, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 6.3; WOW64; Trident/7.0; rv:11.0) like Gecko');
  11.                 $text0 = curl_exec($ch0);
  12.                 curl_close($ch0);
  13.                 preg_match('#<div style=(.*?)><a href=(.*?)><span class=(.*?)></span></a></div><br><font class=txtmed  style=(.*?)>(.*) ((.*)) (.*)</font></b></font></div>#',$text0,$geim);
  14.                 }
  15.             alert('УРА');
  16.             }
  17.  
  18.  

 

Powered by ExBB FM 1.0 RC1