|
YuGran ↓
|
 |
|
10 Июль, 2008, 03:35:04
|
НЕ ХУЕТА!
ХУЕТА!
|
Карма: 0
Сообщений: 21 Сила слова: 0
|
Есть у меня сайт на котором размещена рекламная площадка MobileADS
Так вот, она сильно долго грузится. К примеру вся сраница, учитывая время генерации площадки, сгенерирована за 0.082 сек., из которых на этот блок было потрачено 0.042 сек. %) или 0.976 из 1.019...
вот собсна сам код
$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
|
я думаю основное время у тебя теряеться тут
$mad_lines = @ file("http://mobileads.ru/links?id=$mad_siteId&ip=$mad_ip&xip=$mad_xip&ua=$mad_ua&ref=$mad_ref");
врядли ты сумеешь тут чтото закешировать или оптимизировать
кстати
$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 между собой не связаны
надо либо
либо
а ты сначала открываешь соединение, потом открываешь второе, вычитываешь из второго, закрываешь его, а потом закрываешь первое
|
|
|
|
|
Записан
|
java.lang.OutOfMemoryError
|
|
|
|
YuGran ↓
|
 |
|
11 Июль, 2008, 12:39:36 , спустя 13 часов 51 минуту 41 секунду
|
НЕ ХУЕТА!
ХУЕТА!
|
Карма: 0
Сообщений: 21 Сила слова: 0
|
Можете пожалуйста разьяснить, как получить содержимое файла http://mobileads.ru/links?id=$mad_siteId&ip=$mad_ip&xip=$mad_xip&ua=$mad_ua&ref=$mad_ref при помощи этого кода?
|
|
|
|
|
Записан
|
|
|
|
|
CTAPbIu_MABP ↓
|
 |
|
11 Июль, 2008, 12:36:42 , спустя 11 часов 57 минут 6 секунд
|
НЕ ХУЕТА!
ХУЕТА!
|
мавр
Группа: в ухо Карма: не нужна
Сообщений: 5187 Сила слова: 1.81
|
мануал открыть не пробовал?!
$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
|
не нужные мне заголовки
заголовки отделяються от текста двойным обрывом строки
можно сделать
стандартный код
пришли мне этот мануал
|
|
|
|
|
Записан
|
java.lang.OutOfMemoryError
|
|
|
|
YuGran ↓
|
 |
|
11 Июль, 2008, 08:27:59 , спустя 1 час 41 минуту 52 секунды
|
НЕ ХУЕТА!
ХУЕТА!
|
Карма: 0
Сообщений: 21 Сила слова: 0
|
стандартный код
пришли мне этот мануал
я прекрепил его к посту
всеравно оставляет два обзаца
|
|
|
« Последнее редактирование: 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 сделай, так проще...
Ну замени
for($malCount=0; $malCount < count($mad_lines); $malCount+=2){
на
$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 символа убрать
поместить в масив
$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, большое пасибо!
вот что получилось
$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 »
|
Записан
|
|
|
|
|