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/ лучше этой только лично в асю icon_smile.gif
цитата
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:// длинней хоть и с того же сервера icon_smile.gif Вот чет не сообразил попробовать <a href="img1.jpg">. А по такому быстрей будет соединяться? Хотя врочем все равно там милисекунды, и для меня, блоггера с 20-ю картинками в странице это пофиг, рельно быстрей загружается после включения плагина Супер кэш, он просто создает статичные страницы и всё, никакого тебе инклуда, никакого РНР, чиста ХТМЛ-ка грузится.
цитата
07/05/11 в 19:13
 pornblogger
photomuza писал:
Дык предполагал что абсолютный путь через http:// длинней хоть и с того же сервера icon_smile.gif Вот чет не сообразил попробовать <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: Спасибо за популярное разъяснение icon_smile.gif Но мое предположение было не в длине урла, а в другом: в том что путь 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>



Все icon_smile.gif
Стр. 1, 2  >  последняя »


Эта страница в полной версии