PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи

Страниц (15): В начало « ... 7 8 9 10 11 12 13 14 [15]

> Найдено сообщений: 224
Invert Отправлено: 16 Декабря, 2010 - 04:48:24 • Тема: Помогите с switch • Форум: Программирование на PHP

Ответов: 4
Просмотров: 385
PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3.  
  4. define ( 'BR', "<br />\r\n" );
  5. define ( 'H3s', '<h3>' );
  6. define ( 'H3e', '</h3>' );
  7.  
  8. $roll = rand ( 1, 6 );
  9.  
  10. echo "Число roll = " . $roll . BR;
  11.  
  12. switch ( $roll ) {
  13.         case 1:
  14.                 $romValue = "1";
  15.                 break;
  16.         case 2:
  17.                 $romValue = "II";
  18.                 break;
  19.         case 3:
  20.                 $romValue = "III";
  21.                 break;
  22.         case 4:
  23.                 $romValue = "IV";
  24.                 break;
  25.         case 5:
  26.                 $romValue = "V";
  27.                 break;
  28.         case 6:
  29.                 $romValue = "VI";
  30.                 break;
  31.         default:
  32.                 print "you die";
  33. }
  34.  
  35. echo H3s . "Бинарный код " . $romValue . H3e . BR;
  36.  
  37. ?>
  38.  
Invert Отправлено: 14 Декабря, 2010 - 12:37:37 • Тема: Помогите с CURL • Форум: Программирование на PHP

Ответов: 17
Просмотров: 1776
А к БД доступа нет? На мой взгляд проще записывать прямо в в БД новость.
Invert Отправлено: 14 Декабря, 2010 - 11:53:12 • Тема: PREG_MATCH и его функции, прошу объяснить • Форум: Программирование на PHP

Ответов: 11
Просмотров: 878
JustUserR пишет:
увеличение соответствующей длины строки на единицу обеспечивает индексацией с нуля

Э? А можно подробней?
Invert Отправлено: 14 Декабря, 2010 - 11:34:13 • Тема: Можно ли выполнить код, находящийся внутри переменной? • Форум: Программирование на PHP

Ответов: 7
Просмотров: 823
eval?
Invert Отправлено: 14 Декабря, 2010 - 11:23:19 • Тема: PREG_MATCH и его функции, прошу объяснить • Форум: Программирование на PHP

Ответов: 11
Просмотров: 878
У вас точка стоит вначале, самым первым символом. Она является дополнительным символом.
У вас все логины начинаются с точки?
Invert Отправлено: 14 Декабря, 2010 - 11:08:54 • Тема: PREG_MATCH и его функции, прошу объяснить • Форум: Программирование на PHP

Ответов: 11
Просмотров: 878
Регистронезависимость это отсутствие разницы между буквами в верхнем и нижнем регистре, т.е. А=а, б=Б. В вашем случае 0-9a-z, A-Z не нужно, стоит i.

Черточки это обозначение регулярки: /регулярка/.

По поводу жадности долго объяснять, вы бы почитали статьи, их много хороших.

И отчет начинается с 1, т.е. {2,5} это диапазон от 2-х до 5-ти.
Invert Отправлено: 14 Декабря, 2010 - 10:03:52 • Тема: Ошибки в объекте • Форум: Программирование на PHP

Ответов: 7
Просмотров: 399
Спасибо, я все понимаю. =)
Вы представьте, что там не работа с ПОСТ\ГЕТ, а какие-то сложные вычисления - мне бы советы по философии ООП и структуре объектов.
Invert Отправлено: 14 Декабря, 2010 - 09:51:16 • Тема: Движок для сайта на PHP • Форум: Программирование на PHP

Ответов: 23
Просмотров: 1512
Я с толкнулся с проблемой, когда ни одна из существующих ЦМС не подходит мне. Был вариант изучить Друпал, который дал бы 80% того, что хочется, но это минимум пол года времени на изучение. Да и сложности потом тоже будут: Создание шаблона, напильник для модулей и тд. Поэтому лучшим вариантом есть создание своего детища, под свои задачи.
Простую систему написать могу, но не хочу. Сложную хочу, но пока не могу.
Создание собственного движка, с качественной структурой и модульностью, очень сложная задача, поэтому нужно тщательно готовиться. Пока изучаю информацию и чужие грабли.
Invert Отправлено: 14 Декабря, 2010 - 09:37:43 • Тема: Ошибки в объекте • Форум: Программирование на PHP

Ответов: 7
Просмотров: 399
Что в голову первое пришло, то и сделал.
Что по существу скажете?
Invert Отправлено: 14 Декабря, 2010 - 09:34:57 • Тема: Файлы, Мускуль и Мемкеш • Форум: Прочее

Ответов: 7
Просмотров: 66
Если я все правильно понял и ничего не путаю - мемкеш имеет такую штуку, как промахи, посему некоторые товарищи не рекомендуют в мемкеше хранить важную информацию.
Есть некоторые примеры реализации кэширования отдельных запросов к БД, для ускорения работы ЦМС.
Для меня непонятно как именно делать выборку отдельных записей с БД, которая прокэширована в мемкеш. Для этого видимо придется создать инструментарий, который, как мне кажется, будет работать медленнее, чем выборка с БД.

На мой взгляд мемкеш отличное решение для кэширования горячих, сложных запросов к БД. Или, как вариант, для кэширования изображений в момент большого кол-ва запросов - облегчим работу винту/винтам.

Мемкешем не пользовался, но планирую в ближайшее время. Недавно читал статьи, кстати на Хабре много чего хорошего написано.
Invert Отправлено: 14 Декабря, 2010 - 09:10:23 • Тема: Ошибки в объекте • Форум: Программирование на PHP

Ответов: 7
Просмотров: 399
Здравствуйте.
Совсем недавно начал изучение ОО, поэтому некоторые нюансы мне непонятны. Также могу допускать грубые ошибки.

Необходима ваша консультация и критика: в нужном ли я направлении движусь? Какие ошибки допускаю? Что делать нужно, а что нет?

Для практики поставил себе задачу создать объект чтения и проверки GET и POST данных. Старался делать хорошо и гибко.

Вот что получилось:

PHP:
скопировать код в буфер обмена
  1.  
  2. // Извлечение и проверка _GET и _POST данных :::::::::::::::
  3. // 14.12.2010  Версия: 1.0.20 ::::::::::::::::::::::::::::::
  4.  
  5. /*
  6. bool:результат = SetParameters ( array:имя_переменной=>метод_доступа ) - Установка имен параметров и методов, получение данных по параметрам
  7. bool:результат = CheckData ( int:тип_проверки ) - Проверка данных.
  8.         SET_ONE - Установлен хоть один параметр? Вернет TRUE если это так.
  9.         SET_ALL - Установлены все параметры? Вернет TRUE если это так.
  10.         FULL_ONE - Хоть один параметр имеет данные? Вернет TRUE если это так.
  11.         FULL_ALL - Все параметры имеют данные? Вернет TRUE если это так.
  12. array:данные = GetData () - Возврат ассоциативного массива с данными.
  13. Clear () - Очистка данных обьекта.
  14. Destroy () - Уничтожение обьекта.
  15. */
  16.  
  17. class GetPostProcessing {
  18.         // Параметры
  19.         const _GET = 'g';
  20.         const _POST = 'p';
  21.         const SET_ONE = 1;
  22.         const SET_ALL = 2;
  23.         const FULL_ONE = 3;
  24.         const FULL_ALL = 4;
  25.         //
  26.         private $Data;
  27. // :::::::::::::::::::::::::::::::::::::::::::::::::::::::::
  28.         // Конструктор - установка параметров при инициализации
  29.         function __construct ( $paramlist = FALSE ) {
  30.                 // Проверка наличия данных
  31.                 if ( $paramlist != FALSE ) {
  32.                         // Установка параметров
  33.                         $this->SetParameters ( $paramlist );
  34.                 }
  35.         }
  36. // :::::::::::::::::::::::::::::::::::::::::::::::::::::::::
  37.         // Установка параметров
  38.         public function SetParameters ( $paramlist = FALSE ) {
  39.                 $result = FALSE;
  40.                 // Проверяем массив ли
  41.                 if ( is_array ( $paramlist ) ) {
  42.                         // Это массив
  43.                         foreach ( $paramlist as $name => $method ) {
  44.                                 // Проверяем формат каждого параметра
  45.                                 if ( ( is_string ( $name ) === TRUE ) and ( is_string ( $method ) === TRUE ) ) {
  46.                                         $result = TRUE;
  47.                                         // Вызываем метод чтения данных
  48.                                         $this->Data [ $name ] = $this->_ReadData ( $name, $method );
  49.                                 } else {
  50.                                         // Ошибка формата параметра
  51.                                         $this->Data [ $name ] = FALSE;
  52.                                 }
  53.                         }
  54.                 }
  55.                 return $result;
  56.         }
  57. // :::::::::::::::::::::::::::::::::::::::::::::::::::::::::
  58.         // Проверка данных
  59.         public function CheckData ( $type = FALSE ) {
  60.                 // Считаем кол-во элементов массива, проверяем
  61.                 if ( $list_count = count ( $this->Data ) ) {
  62.                         // Определяем тип проверки
  63.                         switch ( $type ) {
  64.                                 case self::SET_ONE:
  65.                                         // Проверка отсутствия любого параметра
  66.                                         $check = 0;
  67.                                         foreach ( $this->Data as $name => $content ) {
  68.                                                 // Пошаговая проверка
  69.                                                 if ( $content !== NULL ) {
  70.                                                         // Параметр есть
  71.                                                         $check++;
  72.                                                 }
  73.                                         }
  74.                                         // Контрольная проверка
  75.                                         if ( $check >= 1 ) {
  76.                                                 // Нет отсутствующих параметров
  77.                                                 $result = TRUE;
  78.                                         } else {
  79.                                                 // Есть отсутствующие
  80.                                                 $result = FALSE;
  81.                                         }
  82.                                         break;
  83.                                 case self::SET_ALL:
  84.                                         // Проверка отсутствия всех параметров
  85.                                         $check = 0;
  86.                                         foreach ( $this->Data as $name => $content ) {
  87.                                                 // Пошаговая проверка
  88.                                                 if ( $content !== NULL ) {
  89.                                                         // Параметр есть
  90.                                                         $check++;
  91.                                                 }
  92.                                         }
  93.                                         // Контрольная проверка
  94.                                         if ( $list_count == $check ) {
  95.                                                 // Хоть один параметр есть
  96.                                                 $result = TRUE;
  97.                                         } else {
  98.                                                 // Все параметры отсутствуют
  99.                                                 $result = FALSE;
  100.                                         }
  101.                                         break;
  102.                                 case self::FULL_ONE:
  103.                                         // Проверка на "пустоту" любого параметра
  104.                                         $check = 0;
  105.                                         foreach ( $this->Data as $name => $content ) {
  106.                                                 // Пошаговая проверка
  107.                                                 if ( ( $content != '' ) and ( $content !== NULL ) ) {
  108.                                                         // Параметр не пустой
  109.                                                         $check++;
  110.                                                 }
  111.                                         }
  112.                                         // Контрольная проверка
  113.                                         if ( $check >= 1 ) {
  114.                                                 // Нет пустых параметров
  115.                                                 $result = TRUE;
  116.                                         } else {
  117.                                                 // Есть пустые
  118.                                                 $result = FALSE;
  119.                                         }
  120.                                         break;
  121.                                 case self::FULL_ALL:
  122.                                         // Проверка на "пустоту" всех параметров
  123.                                         $check = 0;
  124.                                         foreach ( $this->Data as $name => $content ) {
  125.                                                 // Пошаговая проверка
  126.                                                 if ( ( $content != '' ) and ( $content !== NULL ) ) {
  127.                                                         // Параметр не пустой
  128.                                                         $check++;
  129.                                                 }
  130.                                         }
  131.                                         // Контрольная проверка
  132.                                         if ( $list_count == $check ) {
  133.                                                 // Хоть один параметр не пустой
  134.                                                 $result = TRUE;
  135.                                         } else {
  136.                                                 // Все параметры пустые
  137.                                                 $result = FALSE;
  138.                                         }
  139.                                         break;
  140.                                 default:
  141.                                         // Ошибка типа проверки
  142.                                         $result = FALSE;
  143.                         }
  144.                 } else {
  145.                         // Ошибка, нет данных
  146.                         $result = FALSE;
  147.                 }
  148.                 return $result;
  149.         }
  150. // :::::::::::::::::::::::::::::::::::::::::::::::::::::::::
  151.         // Возврат данных
  152.         public function GetData () {
  153.                 // Извлекаем данные
  154.                 $result = $this->Data;
  155.                 return $result;
  156.         }
  157. // :::::::::::::::::::::::::::::::::::::::::::::::::::::::::
  158.         // Очистка обьекта
  159.         public function Clear () {
  160.                 $this->Data = FALSE;
  161.         }
  162. // :::::::::::::::::::::::::::::::::::::::::::::::::::::::::
  163.         // Уничтожение обьекта
  164.         public function Destroy () {
  165.                 unset ( $this );
  166.         }
  167. // :::::::::::::::::::::::::::::::::::::::::::::::::::::::::
  168.         // Чтение данных
  169.         private function _ReadData ( $name, $method ) {
  170.                 // Определяем метод доступа
  171.                 switch ( $method ) {
  172.                         case self::_GET:
  173.                                 // Получаем данные
  174.                                 $result = $_GET [ $name ];
  175.                                 break;
  176.                         case self::_POST:
  177.                                 // Получаем данные
  178.                                 $result = $_POST [ $name ];
  179.                                 break;
  180.                         default:
  181.                                 // Ошибка метода
  182.                                 $result = FALSE;
  183.                 }
  184.                 return $result;
  185.         }
  186. // :::::::::::::::::::::::::::::::::::::::::::::::::::::::::
  187. }
  188.  


И работа с объектом:

PHP:
скопировать код в буфер обмена
  1.  
  2. // Инициализация и извлечение данных
  3. $gpp = new GetPostProcessing ( array ( 'get_prm_name' => GetPostProcessing::_GET, 'post_prm_name' => GetPostProcessing::_POST ) );
  4. // Отдельно: извлечение данных
  5. $gpp->SetParameters ( array ( 'get_prm_name' => GetPostProcessing::_GET, 'post_prm_name' => GetPostProcessing::_POST ) );
  6. // Проверка данных
  7. if ( $gpp->CheckData ( GetPostProcessing::SET_ALL ) ) echo "Установлены все параметры! <br />";
  8. if ( $gpp->CheckData ( GetPostProcessing::SET_ONE ) ) echo "Установлен хоть один параметр! <br />";
  9. if ( $gpp->CheckData ( GetPostProcessing::FULL_ALL ) ) echo "Все параметры содержат данные! <br />";
  10. if ( $gpp->CheckData ( GetPostProcessing::FULL_ONE ) ) echo "Хоть один параметр содержит данные! <br />";
  11. // Получаем данные
  12. $GetPostData = $gpp->GetData ();
  13. // Очищаем обьект, если нужно.
  14. $gpp->Clear ();
  15. // Удаляем обьект
  16. $gpp->Destroy ();
  17.  


Заранее спасибо за помощь!
Invert Отправлено: 13 Декабря, 2010 - 05:49:09 • Тема: Быстродействие класса. • Форум: Программирование на PHP

Ответов: 18
Просмотров: 1430
Спасибо за спор, кое-что полезное для себя вычитал.
К сожалению я ничего так и не тестировал, руки не доходят. Но сделал для себя вывод: это не то место, где нужно экономить. Повысить производительность можно многими способами (кэширование и пр.), более важной является задача создать качественные многоразовые объекты, которые в будущем мне сэкономят время и нервы.

ПС. Я только недавно начал переход на ОО, ранее использовал только процедурный метод.
Invert Отправлено: 24 Ноября, 2010 - 19:18:27 • Тема: Быстродействие класса. • Форум: Программирование на PHP

Ответов: 18
Просмотров: 1430
Спасибо, но хотелось бы больше конкретики. Думаю провести небольшое тестирование и показать сюда результат, если кому-то интересно.
Invert Отправлено: 24 Ноября, 2010 - 13:18:12 • Тема: Быстродействие класса. • Форум: Программирование на PHP

Ответов: 18
Просмотров: 1430
Добрый день ув. пользователи.
Нужна ваша помощь в решении вопроса быстродействия класса.

Допустим есть объект:
PHP:
скопировать код в буфер обмена
  1.  
  2. class Object {
  3.  
  4.    public function SetA ( $prmA ) {
  5.       ... проверка и установка настроек объекта ...
  6.  
  7. }
  8.    public function SetB ( $prmB ) {
  9.       ... проверка и установка настроек объекта ...
  10.  
  11. }
  12.    public function SetC ( $prmC ) {
  13.       ... проверка и установка настроек объекта ...
  14. }
  15.  
  16. ...
  17.  
  18. }

PHP:
скопировать код в буфер обмена
  1.  
  2. $obj = new Object;
  3. // Установка параметров объекта
  4. // Классически задаются через отдельные методы, каждый параметр проверяется на правильность, параметры сохраняются во внутренних переменных объекта.
  5. $obj->SetA ( $prm_a );
  6. $obj->SetB ( $prm_b );
  7. $obj->SetC ( $prm_c );
  8. // Потом обрабатываем данные на основе заданных параметров
  9. $obj->SomeFunc ( $x );
  10. // Удаляем объект
  11. $obj->Free ();
  12.  


Сам скрипт обрабатывает некоторые файлы с винта, некоторые сжимает и кэширует в отдельную директорию. Сайт посещаемый, ожидаемое кол-во запросов к скрипту от 10 до 50 в секунду. Вопрос стоит в быстродействии скрипта.

Была мысль задавать все параметры внутри объекта константами, максимально уменьшив кол-во всяких проверок и методов. Пример ниже:
PHP:
скопировать код в буфер обмена
  1. class Object {
  2.    // Вместо методов установки и проверки парамеров задаем константы
  3.    const PRM_A = 'prm_a';
  4.    const PRM_A = 'prm_a';
  5.    const PRM_A = 'prm_a';
  6.  
  7. ...
  8.  
  9. }

PHP:
скопировать код в буфер обмена
  1.  
  2. $obj = new Object;
  3. // Установка параметров не требуется, все параметры жестко установлены внутри объекта
  4. $obj->SomeFunc ( $x );
  5. // Удаляем объект
  6. $obj->Free ();
  7.  

Как вы думаете, какова разница в скорости обработки этих вариантов? Стоит ли ухудшать качество класса ради увеличения скорости?

Страниц (15): В начало « ... 7 8 9 10 11 12 13 14 [15]
Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB