Master-X
Регистрация
|
Вход
Форум
|
Новости
|
Статьи
Главная
»
Форум
»
Реклама, Объявления
»
Тема:
SmartCJ: FAQ от создателя скрипта (+ Hamster Embed)
Новая тема
Ответить
цитата
02/05/11 в 16:57
LemonS
Не смог найти FAQ тему, поэтому создам новую.
Уже не первый раз сталкиваюсь с конструкциями вида
include('http://otherdomain/1.html');
или
virtual('/scj/top/top.html');
причем таких конструкций может быть по 10 штук на темплейт. От скрипта это не зависит, так не надо делать вообще.
Почему:
ПХП отрабатывает ДО того как серфер получает страницу. Поэтому если у вас есть include('http://otherdomain/1.html'), который находится на другом сервере вы получаете задержку в отдаче страницы. А если по какой-то причине этот другой домен еще и решил притормозить, то у вас найнет тормозить в отдаче и оригинальный домен.
Даже если otherdomain на том же серваке, то как и в случае virtual('/scj/top/top.html'), на 1 запрос к серваку у вас получается как минимум 2: 1 запрос конкретно к вашему домену + 1 запрос include('http://otherdomain/1.html') или virtual('/scj/top/top.html').
Если у вас 10 инклудов вида virtual('/scj/top/top.html') то у вас сервак на 1 реальный запрос выполняет каждый раз еще 10 подзапросов. Как это отражается на нагрузке думаю объяснять не надо.
Как надо делать:
всегда юзать только локальные инклуды. Те virtual('/scj/top/top.html') надо делать как include('/home/user/domain/scj/top/top.html');
если надо инклудить файлик с дургого домена который на том же серваке - аналогично, просто другой путь.
Если файл на другом серваке то попросить админа прописать копирование этого файла по крону на локальный домен и опять же делать локальный инклуд.
Последний раз редактировалось: LemonS (
05/10/11 в 17:03
), всего редактировалось 2 раз(а)
цитата
02/05/11 в 17:46
LemonS
еще вариант
readfile('http://domsin/1.html') - это аналогично include('http://...')
Как обработать параметры
обычно банероротаторы инклудят через JS, но некоторые локальные ротаторы требуют инклуда в темплейте и их инклудят вида
<?php
include('http://domain.com/banner.php?x=3&y=2');
?>
поскольку это не совсем хороший вариант лучше сделать так
<?php
$_GET['x'] = 3;
$_GET['y'] = 2;
include('banner.php');
?>
таким образом и параметры передать, и инклуд сделать локальным, а не через http.
цитата
02/05/11 в 18:12
x123p
полезно и познавательно!
цитата
02/05/11 в 18:44
x123p
полезно и познавательно!
цитата
02/05/11 в 21:56
basta
а к таким SSI инклудам это тоже относится?
<!--#include virtual="/top/top.html" -->
цитата
03/05/11 в 15:41
Benny
LemonS писал:
всегда юзать только локальные инклуды. Те virtual('/scj/top/top.html') надо делать как include('/home/user/domain/scj/top/top.html');
они же оба локальные.
что, реально есть разница между абсолютным и относительным путем?
цитата
03/05/11 в 15:50
pornblogger
Benny писал:
они же оба локальные.
что, реально есть разница между абсолютным и относительным путем?
тут разница в
"include" и "virtual"
цитата
03/05/11 в 17:40
lega_cobra
basta писал:
а к таким SSI инклудам это тоже относится?
<!--#include virtual="/top/top.html" -->
Да, относится. Если включаемый файл такой же (того же типа), как и включающий, то можно вместо virtual= использовать file=.
цитата
06/05/11 в 14:53
klesk
Народ, киньте, плиз, ссылку на толковый мануал по SmartCJ. А еще лучше на какой-нибудь туториал типа "Как сделать CJ на SmartCJ".
цитата
06/05/11 в 15:58
LemonS
klesk:
http://smartcj.com/wiki/
лучше этой только лично в асю
цитата
07/05/11 в 17:52
photomuza
Не знаю как с инклудом по локальному и абсолютному пути, но на днях решил попробовать заменить абсолютные пути к картинкам на блоге типа <a href="http://my_blog.com/pics/img1.jpg"> на <a href="/pics/img1.jpg">. Был уверен, что загрузка ускорится, но все же сначала решил сделать тест: залил 500 одинаковых картинок где-то по 300 байт каждая (чтоб сама картинка долго не грузилась) с именами 001-500.jpg, выложил их на одну страницу, убрал для теста все с блога и тестил время загрузки в двух онлайн сервисах оба варианта. На мое удивление, оказалось что разницы по времени загрузки никакой.
цитата
07/05/11 в 18:05
pornblogger
photomuza писал:
На мое удивление, оказалось что разницы по времени загрузки никакой.
так а за счёт чего будет меньше? на каждую картинку идёт всё равно отдельный запрос к серверу.
цитата
07/05/11 в 18:32
photomuza
Дык предполагал что абсолютный путь через http:// длинней хоть и с того же сервера
Вот чет не сообразил попробовать <a href="img1.jpg">. А по такому быстрей будет соединяться? Хотя врочем все равно там милисекунды, и для меня, блоггера с 20-ю картинками в странице это пофиг, рельно быстрей загружается после включения плагина Супер кэш, он просто создает статичные страницы и всё, никакого тебе инклуда, никакого РНР, чиста ХТМЛ-ка грузится.
цитата
07/05/11 в 19:13
pornblogger
photomuza писал:
Дык предполагал что абсолютный путь через http:// длинней хоть и с того же сервера
Вот чет не сообразил попробовать <a href="img1.jpg">. А по такому быстрей будет соединяться?
мне кажется разницы вообще тут нет, всё это в итоге приведёт к одному и тому же запросу на сервер. в нём будет имя хоста и путь к картинке (абсолютный).
в примерах там дело не в путях, а в том что функции virtual и include работают по-разному
цитата
08/05/11 в 02:12
istota
а как быть с include("in.php"); ?
цитата
17/05/11 в 21:33
LemonS
photomuza:
вопрос не в длинне урла
http://domain.com/1.jpg
и
http://domain.com/1/2/3/4/5/6/7/8/1.jpg
загрузятся с одинаковой скоростью.
Вопрос в том, что при include() система сделает грубо следующее: (тем кто разбирается просьба не придираться и не усложнять пример)
1. приходит запрос к апачу например
http://domain.com/index.php
2. система запускает пхп
3. он читает index.php
4. выполняет
5. видит include(file.php)
6. читает с диска file.php
7. выполняет и его за компанию
8. возвращает то что получилось у пхп - пользователю
в варианте virtual()
1. приходит запрос к апачу например
http://domain.com/index.php
2. система запускает пхп
3. он читает index.php
4. выполняет
5. видит virtual(file.php)
тут отличие
- ага думает пхп, это ж подзапрос
- запускаем еще один процесс апача
- оттуда запускаем еще один процесс пхп
- он читает file.php, возвращает его изначальному процессу, тот компанует чего получилось
8. возвращает то что получилось у пхп - пользователю
в разных системах могут быть разные варианты, но смысл примерно такой, что запуск еще одного или даже 2х процессов отнимает у системы ресурсы.
istota:
а какой с ним вопрос ? тут же бычный локальный инклуд, все хорошо.
цитата
18/05/11 в 14:34
photomuza
LemonS:
Спасибо за популярное разъяснение
Но мое предположение было не в длине урла, а в другом: в том что путь
http://...
предполагает заход "с улицы", а путь
/folder...
- заход "по месту", т.е. внутри сервера. Поэтому и думал, что будет разное время на запрос.
цитата
19/05/11 в 23:06
XZ
Оффтопик:
тут другое совсем
полный путь для <image src="/image.jpg"> все равно будет h++p://domain.com/image.jpg
и на каждую картинку в любом случае отдельный запрос к вебсерверу, поэтому и ставят люди на сиджах более легкий nginx на статику
в случае с php запрос к вебсерверу только если вызываем его извне, h++p://domain.com/script.php вместо /home/domain.com/script.php
LemonS:
спасибо за полезный топик
цитата
05/07/11 в 12:27
artweb
Как убрать:
<!--This page was generated by SmartCJ : free version -->
?
цитата
05/07/11 в 14:32
paranoik.death
artweb:
купить у Лемона лицензию
цитата
05/07/11 в 17:40
net666
artweb писал:
Как убрать:
<!--This page was generated by SmartCJ : free version -->
?
Оффтопик:
А чем тебе это мешает ?
цитата
11/07/11 в 11:45
LemonS
artweb:
по идее ничем мешать не должно, ставят практически все скрипты включая тот же ВП.
цитата
13/07/11 в 22:45
artweb
LemonS писал:
artweb:
по идее ничем мешать не должно, ставят практически все скрипты включая тот же ВП.
Я параною на счет гугла. Можно все смарты отправить в песок на раз.
цитата
27/07/11 в 17:08
LemonS
Столкнулся еще с вопросом, который можно в faq. Это относится ко всем скриптам, но пишу сюда что б не плодить темы.
Например, используется внешний ротатор и smartcj (в реальности не важно какой скрипт трейда).
имеем ссылку вида
хттп://yourdomain/rotator/out.php?param1=a&u=/scj/cgi/out.php?url=http://galleries.com/index.html
Все работает хорошо:юзер кликает на линк, его шлет на rotator/out.php? этот скрипт видит парамер u= и пересылает на нужный урл.
но тут мы решили добавить скиминг в урл.
хттп://yourdomain/rotator/out.php?param1=a&u=/scj/cgi/out.php?p=60&url=http://galleries.com/index.html
Казалось бы все хорошо, однако шлет не туда.
Разгадка в следующем: парамеры в урле разделяются по занаку &.
значит скрипт /rotator/out.php получит следующие парамеры (разделяем по &) :
param1=a
u=/scj/cgi/out.php?p=60
url=http://galleries.com/index.html
как видно парамер u будет равен /scj/cgi/out.php?p=60, /rotator/out.php откравит на этот урл, а урл гали можно сказать потеряется.
Для того, что бы /rotator/out.php понял что "url=http://galleries.com/index.html" это так же часть относящаяся к параметру u= надо & заменить %26. Те урл должен быть таким:
хттп://yourdomain/rotator/out.php?param1=a&u=/scj/cgi/out.php?p=60%26url=http://galleries.com/index.html
функция замены & на %26 существует по всех ротаторах вроде бы.
цитата
01/08/11 в 15:07
LemonS
Adult Empire и кастом гали
У Adult Empire для каждой гали есть свой join url, например на гале
http://galleries.adult-empire.com/7586/471609/7394/index.php
join url у нее
http://www.adult-empire.com/rs.php?site_id=7586&wm_id=7394& _id=471609
Выступлю в роли капитана очевидность, но смысл отдельного джойна в том, что для нишевых галер - нишевые страницы джойна.
Проблема: если вы делаете у себя кастомные гали то спонсор у них один - AE и таким образом join url на всех галерах получается один и тот же, теряются персональные джоины. Дабы не терялось надо делать так:
В начало темплейта (вероятнее всего custom_content_pic) добавляем код
<?php
$tmp = explode('/', '<!--SOURCE_URL-->');
$join_url = "http://www.adult-empire.com/rs.php?site_id={$tmp[3]}&wm_id={$tmp[5]}&sub_id=1&rs_fhg_id={$tmp[4]}";
?>
и в нужном месте темплейта где нам надо урл на нишевый джоин
<a href='<?=$join_url?>'>JOIN HERE</a>
Все
Стр.
1
,
2
>
последняя »
Новая тема
Ответить
Эта страница в полной версии