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

Форум PHP

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

 

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

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

тема: preg_match и высоконагруженные проекты
 
 автор: tvv123456   (19.03.2014 в 20:36)   письмо автору
 
 

Доброго времени суток.
Решил на днях написать интернет магазин. Использую modrewrite и в $route попадают значения вида content/pageName где content - это метод контроллера, который необходимо запустить, a pageName - параметр который необходимо передать в метод.
Нашел только одно решение для исполнения такой архитектуры:

<?php
$route 
=@ $_GET['route'];
if(
$route == "" || $route == "index"$controller->content("index");
elseif(
preg_match("|^content/([A-z_0-9-]+).*$|",$route,$namePage)) $controller->content($namePage[1]);
elseif(
preg_match("|^category/([A-z_0-9-]+)\.html$|",$route,$categoryIden)) $controller->listProductsCat($categoryIden[1]);
elseif(
preg_match("|^subcat/([A-z_0-9-]+)\.html$|",$route,$subcat)) $controller->listProductsSubCat($subcat[1]);
elseif(
preg_match("|^product/.*_([\d]+)\.html$|",$route,$product)) $controller->product($product[1]);
elseif(
preg_match("|^insertProdInCart/{0,1}$|",$route,$product)) $controller->insertProdInCart();
elseif(
preg_match("|^userCart/{0,1}$|",$route,$product)) $controller->userCart();
elseif(
preg_match("|^fastBuy/{0,1}$|",$route,$product)) $controller->fastBuy();

Но встал вопрос:
насколько ресурсоемок данный способ и не порушит ли он мне сервер? может у кого есть опыт разработки высоко нагруженных проектов и сможете подсказать более приемлимый способ?
Заранее благодарен за ответы.

  Ответить  
 
 автор: psychomc   (19.03.2014 в 20:50)   письмо автору
 
   для: tvv123456   (19.03.2014 в 20:36)
 

какой-то стремный роутер. на самом деле не порушит, если конечно будет корректно работать. лучше уделите больше внимания базе данных, расстановке индексов и т.д. там куда большее влияние на производительность

  Ответить  
 
 автор: tvv123456   (19.03.2014 в 21:34)   письмо автору
 
   для: psychomc   (19.03.2014 в 20:50)
 

а почему стремный?

  Ответить  
 
 автор: psychomc   (19.03.2014 в 22:32)   письмо автору
 
   для: tvv123456   (19.03.2014 в 21:34)
 

потому что написан скорее всего рукой школьника или новичка. это даже роутером сложно назвать, т.к это даже не класс. конкретно ту функциональность, которую он реализует, проще и эффективнее было бы сделать через htaccess

  Ответить  
 
 автор: tvv123456   (19.03.2014 в 22:41)   письмо автору
 
   для: psychomc   (19.03.2014 в 22:32)
 

Не совсем понимаю о чем речь. Можно пример? Интересует содиржимое .htaccess и что в итоге должно попасть в route
Должны обязательно выполняться следующие минимальные условия:
при url mySite.ru/category/phone.html
Будет запущен контроллер category с параметром phone, который соберет всю информацию для view и пользователю будет выдан список товара из категории phone.
Также могут передаваться другие параметры:
например, постраничная навигация тогда url будет таким:
mysite.ru/category/page/2/phone.html
при помощи регулярных выражений я легко смогу вытащить номер страницы, а вот при помощи htaccess не знаю реализации
Может возникнуть вопрос зачем вообще тогда mod-rewrite, если можно просто считать url и найти в нем нужные параметры?
Но при использовании mod-rewrite можно создать допустим директорию userCabinet со своим индексным файлом в который опять же будут передаваться необходимые данные в $route и ничего лишнего(ну, конечно, если в эту директорию подкинуть нужный htaccess).
что тут школьного и как сделать лучше, чтобы все работало как я описал выше?

  Ответить  
 
 автор: psychomc   (19.03.2014 в 23:39)   письмо автору
 
   для: tvv123456   (19.03.2014 в 22:41)
 

http://ruseller.com/lessons.php?rub=28&id=309
по поводу школьного...только новичек мог запихнуть в один класс (объектом которого является $controller) страницы, категории, продукты, корзину и бог знает что ещё. если хотите понять как должен выглядеть настоящий роутер и как вообще должна быть правильно построена mvc-система, посмотрите документацию любого популярного mvc-фреймворка, например zend framework, symphony, kohana и т.д. это тема слишком широкая. то, что я вижу в вашем примере, использовать не стоит. если нужен конкретно модуль интернет-магазина, можете попробовать вот это http://www.prestashop.com/ru/. если хотите написать интернет-магазин сами, то тоже советую использовать фреймворк, но предварительно очень желательно досканально изучить php, в частности его ООП возможности

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

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