Этот сайт не наркоманов. Это сайт программистов.

Добро пожаловать на Пыху!

Логин:
Пароль:
 

Нет прописки? Зарегистрируйся!

Новости

Мы в твиттере!
Мы вконтакте!
Мы на яндексе!

Краснодарское время: 25 Май, 2012, 09:28:30

Страниц: [1] 2 3 4
Печать
Автор Тема: Оптимизация кода рекламной площадки от MobileADS  (Прочитано 4898 раз)
0 Пользователей и 1 Гость смотрят эту тему.
YuGran    ↓ 
10 Июль, 2008, 03:35:04
НЕ ХУЕТА! ХУЕТА!


Карма: 0
Сообщений: 21
Сила слова: 0

Есть у меня сайт на котором размещена рекламная площадка MobileADS
Так вот, она сильно долго грузится. К примеру вся сраница, учитывая время генерации площадки, сгенерирована за  0.082 сек., из которых на этот блок было потрачено 0.042 сек. %) или 0.976 из 1.019...
 
вот собсна сам код
PHP
$mad_socketTimeout = 2; // таймаут соединения с сервером mobileads.ru
ini_set("default_socket_timeout",$mad_socketTimeout);
$mad_siteId = 0000;
$mad_pageEncoding = "UTF-8"; // устанавливаем кодировку страницы
 
$mad_ua = urlencode(@$_SERVER['HTTP_USER_AGENT']);
$mad_ip = urlencode(@$_SERVER['REMOTE_ADDR']);
$mad_xip = urlencode(@$_SERVER['HTTP_X_FORWARDED_FOR']);
$mad_ref = urlencode(@$_SERVER['SERVER_NAME'].@$_SERVER['REQUEST_URI']);
 
$mad_lines = "";
$mad_fp = @fsockopen ("mobileads.ru", 80, $mad_errno, $mad_errstr, $mad_socketTimeout);
if($mad_fp) {
// переменная $mad_lines будет содержать массив, непарные элементы которого будут ссылками, парные - названием
$mad_lines = @file("http://mobileads.ru/links?id=$mad_siteId&ip=$mad_ip&xip=$mad_xip&ua=$mad_ua&ref=$mad_ref");
}
@fclose($mad_fp); // вывод ссылок
for($malCount=0; $malCount < count($mad_lines); $malCount+=2){
  $linkURL = trim($mad_lines[$malCount]);
  $linkName = iconv("Windows-1251", $mad_pageEncoding, $mad_lines[$malCount+1]);
  echo "<a href=\"".$linkURL."\">".$linkName."</a><br />";
}
в среднем выполняется за 0.045 сек.
 
Подскажите. Как можно его оптимизировать?
« Последнее редактирование: 11 Июль, 2008, 09:18:52 от YuGran » Записан
AlexB    ↓ 
10 Июль, 2008, 08:21:54 , спустя 4 часа 46 минут 50 секунд
НЕ ХУЕТА! ХУЕТА!

Группа: в ухо

Карма: 89
Сообщений: 3428
Сила слова: 2.6

В отдельный скрипт и в iframe.
Записан

YuGran    ↓ 
10 Июль, 2008, 09:05:01 , спустя 43 минуты 7 секунд
НЕ ХУЕТА! ХУЕТА!


Карма: 0
Сообщений: 21
Сила слова: 0


В отдельный скрипт и в iframe.
это ж мобильный сайт, тут с iframe не получется...
Записан
CTAPbIu_MABP    ↓ 
10 Июль, 2008, 10:47:55 , спустя 1 час 42 минуты 54 секунды
НЕ ХУЕТА! ХУЕТА!

мавр
Группа: в ухо

Карма: не нужна
Сообщений: 5187
Сила слова: 1.81

я думаю основное время у тебя теряеться тут
 
PHP
$mad_lines = @file("http://mobileads.ru/links?id=$mad_siteId&ip=$mad_ip&xip=$mad_xip&ua=$mad_ua&ref=$mad_ref");

врядли ты сумеешь тут чтото закешировать или оптимизировать
 
кстати
 

PHP

$mad_fp = @fsockopen ("mobileads.ru", 80, $mad_errno, $mad_errstr, $mad_socketTimeout);
if($mad_fp) {
// переменная $mad_lines будет содержать массив, непарные элементы которого будут ссылками, парные - названием
$mad_lines = @file("http://mobileads.ru/links?id=$mad_siteId&ip=$mad_ip&xip=$mad_xip&ua=$mad_ua&ref=$mad_ref");
}
@fclose($mad_fp); // вывод ссылок
 

никто не заметил что это бред?
fsockopen  и file между собой не связаны
надо либо
 
PHP

$fp = fsockopen($host, $port, $errno, $errstr, $ttl);
$text = fread($fp,1024);
fclose($fp);
 

либо
 
PHP
$lines = file($url);

а ты сначала открываешь соединение, потом открываешь второе, вычитываешь из второго, закрываешь его, а потом закрываешь первое
Записан

java.lang.OutOfMemoryError
YuGran    ↓ 
11 Июль, 2008, 12:39:36 , спустя 13 часов 51 минуту 41 секунду
НЕ ХУЕТА! ХУЕТА!


Карма: 0
Сообщений: 21
Сила слова: 0

Можете пожалуйста разьяснить, как получить содержимое файла
PHP
http://mobileads.ru/links?id=$mad_siteId&ip=$mad_ip&xip=$mad_xip&ua=$mad_ua&ref=$mad_ref
при помощи этого кода?

PHP

$fp = fsockopen($host, $port, $errno, $errstr, $ttl);
$text = fread($fp,1024);
fclose($fp);
 
Записан
CTAPbIu_MABP    ↓ 
11 Июль, 2008, 12:36:42 , спустя 11 часов 57 минут 6 секунд
НЕ ХУЕТА! ХУЕТА!

мавр
Группа: в ухо

Карма: не нужна
Сообщений: 5187
Сила слова: 1.81

мануал открыть не пробовал?!
 

PHP

$fp = fsockopen("mobileads.ru", 80, $errno, $errstr, 30);
$out = "GET links?id=$mad_siteId&ip=$mad_ip&xip=$mad_xip&ua=$mad_ua&ref=$mad_ref HTTP/1.1\r\n";
$out .= "Host: mobileads.ru\r\n";
$out .= "Connection: Close\r\n\r\n";
fwrite($fp, $out);
$response = "";
while (!feof($fp)) {
$response .= fgets($fp, 1024);
}
fclose($fp);
 

в результате у тебя в $response будет ответ ввиде строки а не ввиде массива как после file()
Записан

java.lang.OutOfMemoryError
AlexB    ↓ 
11 Июль, 2008, 12:40:35 , спустя 3 минуты 53 секунды
НЕ ХУЕТА! ХУЕТА!

Группа: в ухо

Карма: 89
Сообщений: 3428
Сила слова: 2.6

А еще, если хостинг позволяет, можно все это заменить одним file_get_contents.
Только проблемы скорости все это не решает, ибо тупит не скрипт, а удаленный сервер ...
Вообще обычно вся эта хрень формируется через JS, а не на стороне сервера.
« Последнее редактирование: 11 Июль, 2008, 12:43:03 от AlexB » Записан

CTAPbIu_MABP    ↓ 
11 Июль, 2008, 12:43:25 , спустя 2 минуты 50 секунд
НЕ ХУЕТА! ХУЕТА!

мавр
Группа: в ухо

Карма: не нужна
Сообщений: 5187
Сила слова: 1.81

AlexB, да не проблема можно я через курл сделать))) но все-таки одно соединенеи сервером тупит меньше чем два)))
Записан

java.lang.OutOfMemoryError
YuGran    ↓ 
11 Июль, 2008, 05:35:46 , спустя 4 часа 52 минуты 21 секунду
НЕ ХУЕТА! ХУЕТА!


Карма: 0
Сообщений: 21
Сила слова: 0

я пробовал, но в ответ не только файл приходит. а еще и не нужные мне заголовки которые. вот я и спросил. как же можно получить содержимое файла?
 

А еще, если хостинг позволяет, можно все это заменить одним file_get_contents.
Только проблемы скорости все это не решает, ибо тупит не скрипт, а удаленный сервер ...
Вообще обычно вся эта хрень формируется через JS, а не на стороне сервера.
В данном случие JS нельзя использовать :(
 

AlexB, да не проблема можно я через курл сделать))) но все-таки одно соединенеи сервером тупит меньше чем два)))
а вот с 2 соеденениями это жесть. так как это стандартный код который запускается примерно ~ 4 000 000 раз в день (со всех сайтов) %) вот наверно по этому так сервак и тупит...
« Последнее редактирование: 11 Июль, 2008, 06:03:13 от YuGran » Записан
CTAPbIu_MABP    ↓ 
11 Июль, 2008, 06:46:07 , спустя 1 час 10 минут 21 секунду
НЕ ХУЕТА! ХУЕТА!

мавр
Группа: в ухо

Карма: не нужна
Сообщений: 5187
Сила слова: 1.81

не нужные мне заголовки
заголовки отделяються от текста двойным обрывом строки
 
можно сделать
 
PHP
substr($response,strpos("\r\n\r\n", $response))

стандартный код
пришли мне этот мануал
Записан

java.lang.OutOfMemoryError
YuGran    ↓ 
11 Июль, 2008, 08:27:59 , спустя 1 час 41 минуту 52 секунды
НЕ ХУЕТА! ХУЕТА!


Карма: 0
Сообщений: 21
Сила слова: 0


стандартный код
пришли мне этот мануал

я прекрепил его к посту
 
PHP
substr($response,strpos($response, "\r\n\r\n"))
всеравно оставляет два обзаца


* MobileADS.png (36.93 Кб, 809x662 - просмотрено 130 раз.)
« Последнее редактирование: 11 Июль, 2008, 10:41:03 от YuGran » Записан
YuGran    ↓ 
11 Июль, 2008, 11:04:43 , спустя 2 часа 36 минут 44 секунды
НЕ ХУЕТА! ХУЕТА!


Карма: 0
Сообщений: 21
Сила слова: 0

Если делать через fsockopen то, как убрать ненужнуе http заголовки и это все поместить в масив?
Если использовать file то, как установить время за которое долже прийти ответ?
 
Видимо те кто написали код, который я разместил в первом посте, тоже не знали ответ не на первый не на второй вопрос! Здесь есть кто может ответить хотябы на один из них?
Записан
aivee    ↓ 
11 Июль, 2008, 11:14:32 , спустя 9 минут 49 секунд
НЕ ХУЕТА! ХУЕТА!

Группа: Джедаи

Карма: 28
Сообщений: 1659
Сила слова: 1.69

Да через file_get_contents сделай, так проще...
 
Ну замени
Text
for($malCount=0; $malCount < count($mad_lines); $malCount+=2){

на
Text
$mad_lines_count = count($mad_lines);
for($malCount=0; $malCount < $mad_lines_count; $malCount+=2){
 

Типа немножко «оптимизируй» xD
Записан

21st century slave
CTAPbIu_MABP    ↓ 
12 Июль, 2008, 12:50:42 , спустя 1 час 36 минут 10 секунд
НЕ ХУЕТА! ХУЕТА!

мавр
Группа: в ухо

Карма: не нужна
Сообщений: 5187
Сила слова: 1.81

как убрать ненужнуе http заголовки
блин да сделай сам чтонибудь! совсем обленился...
 
всеравно оставляет два обзаца
ну значит надо еще 4 символа убрать
 
PHP
substr($response,strpos($response, "\r\n\r\n")+4)

поместить в масив
PHP
$massive = explode("\r\n",$response)
тока тебе это нах не надо
 
Видимо те кто написали код
php видят первый раз
 
как установить время за которое долже прийти ответ
смотри настройки php
« Последнее редактирование: 12 Июль, 2008, 12:52:27 от CTAPbIu_MABP » Записан

java.lang.OutOfMemoryError
YuGran    ↓ 
12 Июль, 2008, 03:52:34 , спустя 3 часа 1 минуту 52 секунды
НЕ ХУЕТА! ХУЕТА!


Карма: 0
Сообщений: 21
Сила слова: 0

CTAPbIu_MABP, большое пасибо!
 
вот что получилось
PHP
$mad_siteId = 0000;
 
$mad_ua = urlencode(@$_SERVER['HTTP_USER_AGENT']);
$mad_ip = urlencode(@$_SERVER['REMOTE_ADDR']);
$mad_xip = urlencode(@$_SERVER['HTTP_X_FORWARDED_FOR']);
$mad_ref = urlencode(@$_SERVER['SERVER_NAME'].@$_SERVER['REQUEST_URI']);
 
$mad_lines = '';
$mad_fp = @fsockopen ('mobileads.ru', 80, $mad_errno, $mad_errstr, 2);
if($mad_fp) {
 
$out = "GET /links?id=$mad_siteId&ip=$mad_ip&xip=$mad_xip&ua=$mad_ua&ref=$mad_ref HTTP/1.1\r\n";
$out .= "Host: mobileads.ru\r\n";
$out .= "Connection: Close\r\n\r\n";
 
fwrite($mad_fp, $out);
 
while (!feof($mad_fp)) {
$mad_lines .= fgets($mad_fp);
}
$mad_lines = substr($mad_lines, strrpos($mad_lines, "\r\n\r\n")+4);
$mad_lines = explode("\r\n",$mad_lines);
fclose($mad_fp);
}
 
$mad_lines_count = count($mad_lines);
for($malCount=0; $malCount < $mad_lines_count; $malCount+=2){
$linkURL = trim($mad_lines[$malCount]);
$linkName = iconv("Windows-1251", "UTF-8", $mad_lines[$malCount+1]);
echo '<a href="'.$linkURL.'">'.$linkName.'</a><br />';
}
 

 
И вот меня заинтересовал еще один вопросы.
Какая разница между использыванием одинарных(') и двойных(") кавычек? Какие использывать лучше?
« Последнее редактирование: 12 Июль, 2008, 06:28:42 от YuGran » Записан
Страниц: [1] 2 3 4
Печать
 

Перейти в: