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

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Помогите переписать скрипт для более ранней версии php

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


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

> Описание: На 5.2.5 работает а на 4.4.6 не хочет.
belousov
Отправлено: 24 Марта, 2010 - 14:53:50
Post Id


Новичок


Покинул форум
Сообщений всего: 23
Дата рег-ции: Окт. 2008  


Помог: 0 раз(а)




есть в инете такой вот пример curl_multi
PHP:
скопировать код в буфер обмена
  1. $s = microtime(true);
  2. // Define the URLs
  3. $urls = array(
  4.   "http://www.google.com"
  5.     );
  6. $pg = new ParallelGet($urls);
  7. print "<br />total time: ".round(microtime(true) - $s, 4)." seconds";
  8.  
  9. // Class to run parallel GET requests and return the transfer
  10. class ParallelGet
  11. {
  12.   function __construct($urls)
  13.   {
  14.     // Create get requests for each URL
  15.     $mh = curl_multi_init();
  16.     foreach($urls as $i => $url)
  17.     {
  18.       $ch[$i] = curl_init($url);
  19.       curl_setopt($ch[$i], CURLOPT_RETURNTRANSFER, 1);
  20.       curl_multi_add_handle($mh, $ch[$i]);
  21.     }
  22.  
  23.     // Start performing the request
  24.     do {
  25.         $execReturnValue = curl_multi_exec($mh, $runningHandles);
  26.     } while ($execReturnValue == CURLM_CALL_MULTI_PERFORM);
  27.     // Loop and continue processing the request
  28.     while ($runningHandles && $execReturnValue == CURLM_OK) {
  29.       // Wait forever for network
  30.       $numberReady = curl_multi_select($mh);
  31.       if ($numberReady != -1) {
  32.         // Pull in any new data, or at least handle timeouts
  33.         do {
  34.           $execReturnValue = curl_multi_exec($mh, $runningHandles);
  35.         } while ($execReturnValue == CURLM_CALL_MULTI_PERFORM);
  36.       }
  37.     }
  38.  
  39.     // Check for any errors
  40.     if ($execReturnValue != CURLM_OK) {
  41.       trigger_error("Curl multi read error $execReturnValue\n", E_USER_WARNING);
  42.     }
  43.  
  44.     // Extract the content
  45.     foreach($urls as $i => $url)
  46.     {
  47.       // Check for errors
  48.       $curlError = curl_error($ch[$i]);
  49.       if($curlError == "") {
  50.         $res[$i] = curl_multi_getcontent($ch[$i]);
  51.       } else {
  52.         print "Curl error on handle $i: $curlError\n";
  53.       }
  54.       // Remove and close the handle
  55.       curl_multi_remove_handle($mh, $ch[$i]);
  56.       curl_close($ch[$i]);
  57.     }
  58.     // Clean up the curl_multi handle
  59.     curl_multi_close($mh);
  60.    
  61.     // Print the response data

Насколько я понимаю проблема в __construct . Можно что-то с этим кодом сделать?
На хостинге ошибок не выдает но и выполнятся не хочет.
php v4.4.6, Zend Engine v1.3.0

(Отредактировано автором: 24 Марта, 2010 - 15:04:52)

 
 Top
Мелкий Супермодератор
Отправлено: 24 Марта, 2010 - 14:57:51
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




PHP 4.x не знает конструктор __construct, попробуйте переименовать по имени класса


-----
PostgreSQL DBA
 
 Top
belousov
Отправлено: 24 Марта, 2010 - 15:10:08
Post Id


Новичок


Покинул форум
Сообщений всего: 23
Дата рег-ции: Окт. 2008  


Помог: 0 раз(а)




а двойное подчеркивание нужно?
PHP:
скопировать код в буфер обмена
  1. class ParallelGet
  2. {
  3.   function __ParallelGet($urls)

ничего не происходит.
PHP:
скопировать код в буфер обмена
  1. class ParallelGet
  2. {
  3.   function ParallelGet($urls)

на 5.2.5 работает а на 4.4.6:
PHP Fatal error: Call to undefined function: curl_multi_init()
насколько я понимаю он еще и с мульти не работает.

(Отредактировано автором: 24 Марта, 2010 - 15:24:42)

 
 Top
Мелкий Супермодератор
Отправлено: 24 Марта, 2010 - 15:59:06
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




belousov пишет:
а двойное подчеркивание нужно?

Нет, не нужно.

belousov пишет:
PHP Fatal error: Call to undefined function: curl_multi_init()
насколько я понимаю он еще и с мульти не работает.

Вот, теперь сам класс работает. А не работает то, над чем этот класс работает Улыбка
cURL-то установлен?


-----
PostgreSQL DBA
 
 Top
belousov
Отправлено: 24 Марта, 2010 - 16:32:36
Post Id


Новичок


Покинул форум
Сообщений всего: 23
Дата рег-ции: Окт. 2008  


Помог: 0 раз(а)




CURL support enabled
CURL Information libcurl/7.16.1 OpenSSL/0.9.7d zlib/1.1.4
свежее чем у меня, скрипт с просто curl работает, просто медленно, ну вот и нашел мульти запрос, получилось запустить у себя время выполнения на три секунды быстрее, просто скорость канала у меня 1mbps а на хостинге 100mbps. Вот и пытаюсь прикрутить его под старую версию.
Я думаю мне гемора меньше переписать скрипт чем хостеру обновится и переписать все сайты)))).

(Отредактировано автором: 24 Марта, 2010 - 16:34:06)

 
 Top
Stierus Супермодератор
Отправлено: 24 Марта, 2010 - 16:36:41
Post Id



Рекордсмен по количеству сообщений за 7 дней


Покинул форум
Сообщений всего: 2132
Дата рег-ции: Дек. 2008  
Откуда: Москваль


Помог: 52 раз(а)




http://ru2.php.net/manual/en/fun...l-multi-init.php

curl_multi_init требует PHP 5
(Добавление)
Цитата:
Я думаю мне гемора меньше переписать скрипт чем хостеру обновится и переписать все сайты)))).
\
Если у тебя php запускается как cgi - ты можешь скомпилировать новую версию, создать папку и в ней с помощью .htaccess прописать запуск нового php при запросе в этой директории. Итого, у тебя будет весь сайт, как сейчас, на php4, а скрипты именно в этой папке php5

(Отредактировано автором: 24 Марта, 2010 - 16:40:23)

 
My status
 Top
JustUserR
Отправлено: 24 Марта, 2010 - 16:45:48
Post Id



Активный участник


Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009  


Помог: 17 раз(а)




belousov Заведете себе PHP5 в виде CGI-версии как советует Stierus и поставьте выполнение PHP-скриптов через него для определенного расширения например .php5
Кстати необходимо учитывать (Помню в установщике одной CMS был такой дефект Улыбка что при PHP-CGI переменная окружения SCRIPT_NAME содержить путь к самому интерпретатору PHP


-----
Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик Улыбка
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
 
 Top
belousov
Отправлено: 24 Марта, 2010 - 17:45:01
Post Id


Новичок


Покинул форум
Сообщений всего: 23
Дата рег-ции: Окт. 2008  


Помог: 0 раз(а)




Хостер сказал что не могут поставить потому что система старая и что уже даже добавить чего-то проблема(((.
Так, что придется таки со скриптом что-то решать.
хотя что тут решишь если ему 5-й надо.

(Отредактировано автором: 24 Марта, 2010 - 17:45:55)

 
 Top
JustUserR
Отправлено: 24 Марта, 2010 - 18:00:15
Post Id



Активный участник


Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009  


Помог: 17 раз(а)




belousov пишет:
Хостер сказал что не могут поставить потому что система старая
Так и не надо ничего ставить - просто если включена возможность исполнения CGI-скриптов мы можете закачать свой исполняемый файл интерпретатора и использовать его как CGI-скрипт и хостер даже не узнает что это PHP Улыбка


-----
Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик Улыбка
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
 
 Top
belousov
Отправлено: 24 Марта, 2010 - 18:18:31
Post Id


Новичок


Покинул форум
Сообщений всего: 23
Дата рег-ции: Окт. 2008  


Помог: 0 раз(а)




Ну тогда если можно поподробнее, сервер у хостера FreeBSD 4.11-STABLE. С чего начать?
 
 Top
Stierus Супермодератор
Отправлено: 25 Марта, 2010 - 09:14:37
Post Id



Рекордсмен по количеству сообщений за 7 дней


Покинул форум
Сообщений всего: 2132
Дата рег-ции: Дек. 2008  
Откуда: Москваль


Помог: 52 раз(а)




Вот как это делается на мастерхосте, почитай, полезно будет http://masterhost[dot]ru/support/doc/php/#compile .Если после прочтения возникнут вопросы - спрашивай.
 
My status
 Top
JustUserR
Отправлено: 25 Марта, 2010 - 14:44:33
Post Id



Активный участник


Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009  


Помог: 17 раз(а)




belousov пишет:
Ну тогда если можно поподробнее, сервер у хостера FreeBSD 4.11-STABLE. С чего начать?
Это хорошо описывается в данной книжке - http://progbook[dot]ru/2008/07/31/ph[dot][dot][dot]jj-kostarev[dot]html - там целый раздел посвящен установке PHP5 в виде CGI для разных видов ОС хостера


-----
Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик Улыбка
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Программирование на PHP »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB