Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Запускать скрипт при обращении к файлу.
 
 автор: tim313   (08.03.2010 в 03:24)   письмо автору
 
 

Есть всеми известное правило RewriteRule которое перенаправляет запрос по опеределенному алгоритму.

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

Тоесть идет запрос на файл на сервере, и если имя этого запроса отвечает опеределенным параметрам(Например те алгоритмы которые мы ставим в RewriteRule) открывался бы нужный нам скрипт с перемеными которые нам нужны.

  Ответить  
 
 автор: sim5   (08.03.2010 в 03:26)   письмо автору
 
   для: tim313   (08.03.2010 в 03:24)
 

А скрипт это что такое, он что не в файлах?

  Ответить  
 
 автор: tim313   (08.03.2010 в 13:07)   письмо автору
 
   для: sim5   (08.03.2010 в 03:26)
 

Да нет вы не поняли, обращение идет к статическому файлу типа: /img/123.jpg

И при таком обращении паралельно открываеться скрипт типа /script.php?id=123

Тоесть пользователь скачивает там картинку по прямой ссылки а скрипт это типа как счетчик.

  Ответить  
 
 автор: sim5   (08.03.2010 в 13:24)   письмо автору
 
   для: tim313   (08.03.2010 в 13:07)
 

Ну и делайте перенаправление, если запрашивается изображение из определенной папки, к этому срипту, а там уже все что положено. В чем проблема?

  Ответить  
 
 автор: tim313   (08.03.2010 в 16:12)   письмо автору
 
   для: sim5   (08.03.2010 в 13:24)
 

Мне не нужно перенаправление.
Допустим вы набираете в браузере прямую ссылку на файл типа : site.ru/123.jpg вам открываеться картинка этого файла , но еще в этот же момент на сервере запускаеться скрипт который делает все что мне нужно.

  Ответить  
 
 автор: sim5   (08.03.2010 в 16:25)   письмо автору
 
   для: tim313   (08.03.2010 в 16:12)
 

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

  Ответить  
 
 автор: Trianon   (08.03.2010 в 16:34)   письмо автору
 
   для: tim313   (08.03.2010 в 16:12)
 

Вам предлагают сделать так:
Вы набираете прямую ссылку. site.ru/123.jpg
Механизм mod_rewrite перебрасывает сервер на скрипт /script.php?id=123
Скрипт выводит в поток содержимое файла site.ru/123.jpg с заголовком Content-Type: image/jpeg и Content-Length: длинаФайлаКартинки ,
а затем выполняет всё, что нужно Вам, как программисту.
Браузер счастливо показывает картинку.
Что еще надо?

  Ответить  
 
 автор: tim313   (08.03.2010 в 16:55)   письмо автору
 
   для: Trianon   (08.03.2010 в 16:34)
 

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

Для чего это нужно на пальцах:

Это нужно что бы сделать подсчет скачиваний файлов.
Вы скажите да есть тысячи счетчиков в чем проблема?

Проблема в том что все счетчики которые я встречал основываються на каких то там ссылках на файл или перенаправления или ссылки на скрипты.
Но если человек ставит например прямую ссылку на файл на какомнибуть фаруме, то тут еже счетчики без сильны.

Trianon, тот механизм что вы написали работает , но он кушает много ресурсов.

Неужели нет подобия RewriteRule только без перенаправления?

  Ответить  
 
 автор: sim5   (08.03.2010 в 17:06)   письмо автору
 
   для: tim313   (08.03.2010 в 16:55)
 

Запрос должен быть к скрипту, вот и думайте.

  Ответить  
 
 автор: tim313   (08.03.2010 в 18:00)   письмо автору
 
   для: sim5   (08.03.2010 в 17:06)
 

Это прямолинейное мышление.

  Ответить  
 
 автор: sim5   (08.03.2010 в 18:05)   письмо автору
 
   для: tim313   (08.03.2010 в 18:00)
 

Даже так?

  Ответить  
 
 автор: Trianon   (08.03.2010 в 17:55)   письмо автору
 
   для: tim313   (08.03.2010 в 16:55)
 

напишите, какой именно оператор кушает много ресурсов?
Ха-ха скажет тот, кто скажет его последним. :-\

  Ответить  
 
 автор: tim313   (08.03.2010 в 17:59)   письмо автору
 
   для: Trianon   (08.03.2010 в 17:55)
 

)
imagejpeg('123.jpg');

Спрашивал даже.
http://www.softtime.ru/forum/read.php?id_forum=1&id_theme=72392&page=1

  Ответить  
 
 автор: Trianon   (08.03.2010 в 18:03)   письмо автору
 
   для: tim313   (08.03.2010 в 17:59)
 

Теперь сравните с fpassthru($h = fopen('123.jpg', 'rb')); fclose($h);
Открывать файл, как картинку в скрипте, Вас никто не заставляет.
Предложено лишь выкинуть его содержимое в браузер.

  Ответить  
 
 автор: tim313   (08.03.2010 в 18:40)   письмо автору
 
   для: Trianon   (08.03.2010 в 18:03)
 

Мне трудно сравнить скорость такой формы открытия с обычной или через GD.
Если вы говорите что этот способ работает быстро придеться вам поверить на слово.

Хотя все равно было бы проще сделать паралельный скрипт и не заморачиваться с формой вывода.

  Ответить  
 
 автор: Trianon   (08.03.2010 в 19:32)   письмо автору
 
   для: tim313   (08.03.2010 в 18:40)
 

Чтобы сделать параллельный скрипт, нужно сперва понять, что Вы вкложите в это понятие (параллельного скрипта), и не до, а после минимального ознакомления с клиент-серверной технологией (по которой браузер взаимодействует с сайтом.)

Но после того, как Вы это сделаете, Вы поймете, что ...
Впрочем, сперва Вы поймете, а потом продолжим спорить.

И Да.
Я не знаю, что такое обычная скорость.
Если под обычной скоростью Вы понимаете скорость отрисовки картинки, взятой из кеша браузера,
то в таком решении от браузера до сервера вообще ни звука не дойдет. Просто не успеет.
Что, очевидно, не то, что Вам нужно.

  Ответить  
 
 автор: tim313   (08.03.2010 в 20:23)   письмо автору
 
   для: Trianon   (08.03.2010 в 19:32)
 

>Чтобы сделать параллельный скрипт, нужно сперва понять, что Вы вкложите в это понятие (параллельного скрипта), и не до, а после минимального ознакомления с клиент-серверной технологией (по которой браузер взаимодействует с сайтом.)

Ну вот идет обращение от браузера клиента к серверу на какойто файл.
Сервер смотрит тип этого файла: Ага тип нам понятен, если нет никаких правил перенаправления подходящий под этот запрос он начинает читать файл и передовать его.

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


>И Да.
>Я не знаю, что такое обычная скорость.
>Если под обычной скоростью Вы понимаете скорость отрисовки картинки, взятой из кеша браузера,

Я вам открою глаза, обычная скорость это скорость задержки, разница во времени между тем как пользователь отправит запрос по ссылке в своем браузере и тем как сервер начнет ему выдавать то что нужно.

  Ответить  
 
 автор: Николай2357   (08.03.2010 в 20:09)   письмо автору
 
   для: tim313   (08.03.2010 в 18:40)
 

А для чего отрисовывать картинку? Сделайте перенаправление в скрипте, после подсчета или чего там нужно сделать.

  Ответить  
 
 автор: tim313   (08.03.2010 в 20:15)   письмо автору
 
   для: Николай2357   (08.03.2010 в 20:09)
 

Ну и как вы это себе представляете?)

Перенаправляеться файл 123.jpg на скрипт script.php?id=123 в котором идет перенаправление на тот же файл 123.jpg) и так по кругу)

  Ответить  
 
 автор: Николай2357   (08.03.2010 в 20:17)   письмо автору
 
   для: tim313   (08.03.2010 в 20:15)
 

Параметр добавить в скрипте не судьба?

  Ответить  
 
 автор: tim313   (08.03.2010 в 20:29)   письмо автору
 
   для: Николай2357   (08.03.2010 в 20:17)
 

>Параметр добавить в скрипте не судьба?

Какой параметр вы имете ввиду: Location ?

Смотрите на сервере прописано правило допустим RewriteRule которое перенаправляет запрос типа 123.jpg на scrpt.php?id=123

Скрипт делает 2 вещи:
1 Подсчет статистики
2 Отдает нужный нам файл.

И так , файл можно отдавать 3мя способами, через GD , через простое чтение файла и вывод в поток браузера через функции работы с файлами или просто еще раз перенаправить через Location.

1й вариант очень требователе, 3й просто глубый ибо образуеться бесконечный цикл, 2й пока более менее приемлимый.
Вы какой параметр имете ввиду.?

  Ответить  
 
 автор: Николай2357   (08.03.2010 в 20:43)   письмо автору
 
   для: tim313   (08.03.2010 в 20:29)
 

<?php

if(!empty($_GET['id'])
{
// Считаем
header('location: '$_GET['id'] .'?GET-параметр_на_который_не_должен_реагировать_Mod_Rewrite');
}

  Ответить  
 
 автор: tim313   (08.03.2010 в 21:10)   письмо автору
 
   для: Николай2357   (08.03.2010 в 20:43)
 

Хитро хитро) заставить файл с параметром считать другим файлом не подходищим под алгоритм Rewrite).
Да , это наиболее простой и удобный способ, спасибо.

  Ответить  
 
 автор: Николай2357   (08.03.2010 в 21:28)   письмо автору
 
   для: tim313   (08.03.2010 в 21:10)
 

Можно проще, скрипт положить в одну директорию, а картинки в другую
Варианты есть...

  Ответить  
 
 автор: Trianon   (08.03.2010 в 22:11)   письмо автору
 
   для: Николай2357   (08.03.2010 в 20:43)
 

header location спровоцирует еще один раунд обмена клиент-сервер.
А Автору нужно быстро.
Он только почему-то не хочет согласиться с тем, что fpassthru работает со скоростью файловой системы сервера. То есть с той же, с какой работает сам апач.

  Ответить  
 
 автор: tim313   (08.03.2010 в 23:48)   письмо автору
 
   для: Trianon   (08.03.2010 в 22:11)
 

И стой же с которой работает nginx?

  Ответить  
 
 автор: Trianon   (09.03.2010 в 03:46)   письмо автору
 
   для: tim313   (08.03.2010 в 23:48)
 

nginx - с какими запросами?
Со статическими?

  Ответить  
 
 автор: tim313   (09.03.2010 в 13:57)   письмо автору
 
   для: Trianon   (09.03.2010 в 03:46)
 

Угу, ну по файлам.

  Ответить  
 
 автор: Trianon   (09.03.2010 в 17:36)   письмо автору
 
   для: tim313   (09.03.2010 в 13:57)
 

Статические запросы по жизни до php не долетают.
Собственно, как я понимаю, в случае с nginx они не долетают и до апача.

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования