Буду очень признателен за помощь!!!
Добавлено спустя 5 часов, 12 минут, 33 секунды В прошлый раз выложил немного неправильный cic.rar.
Вот ссылка на верный:
http://cp.people.overclockers.ru/cgi-bin/dl.pl?id=11369&filename=cic.rar Добавлено спустя 1 час, 1 минуту, 59 секунд Спасибо, больше не надо.
Сам исправил.
Дело было в банальной опечатке.
Member
Статус: Не в сети Регистрация: 28.03.2005 Откуда: Латвия, Рига
Leito писал(а):
Спасибо, больше не надо. Сам исправил. Дело было в банальной опечатке.
2All Тут сегодня с коллегой по работе во время обеда обсуждали свои движки, неожиданно соскачили на такую фишку, которая есть в некоторых языках (Visual Basic, Python).
Код:
<?php function myFunction($a = 3, $b = 'text') { // какие то действия }
myFunction($b = 'new text to deal with'); ?>
Поясняю При вызове функции строка 'new text to deal with' передаётся в параметр $b, а $a так и остаётся равным значению по умолчанию, тобишь 3-м. Пример слегка тривиален, но вот в функциях где по 4-5 параметров и 2-3 из них необязательные, было бы реально удобно. Вот примерчик по сложнее:
Код:
<?php
function select($table, $fields = '*', $where = null, $cnt = null, $order = null) { //Генерируем SQL запрос в зависимости от переданных параметров }
// А теперь вызовем нашу функцию в нескольких вариациях, как это сейчас делается в PHP $sql = select('table', '*', array('filed' => 'value'), '0, 10'); $sql = select('table', array('field1', 'field2'), null, 'field1 ASC'); $sql = select('table', '*', null, null, 'id ASC');
// Немного не красиво, правда? А если бы работало то, что я описывал выше, это выглядело бы так: $sql = select('table', $where = array('filed' => 'value'), $cnt = '0, 10'); $sql = select('table', array('field1', 'field2'), $order = 'field1 ASC'); $sql = select('table', $order = 'id ASC'); ?>
Если первый первый вызов спорно оспаривать, проще написать эту звёздочку, чем потом $where = array('filed' => 'value') и $cnt = '0, 10' то вариант 2 стабильно показывает что это удобная возможность, а 3-й вариант вообще почти незаменим Да, в 5-м PHP можно на OOP реализовать подобие перегрузки, но для такой функции (точнее там будет метод класса) реализовать будет проблемно, много кода для проверки наличия параметров будет. ИМХО, не выход. Посему считаю такая возможность была бы суперской Пишем e-mail разработчикам PHP :? Добавлено спустя 2 часа, 13 минут, 11 секунд Такой вопрос, кто нить работал с Exceptions & try-throw-catch конструкциями? А то у меня проблемка возникла, есть такой код
Код:
<?php
class sqlError extends Exception {}
final class DB { const port = '5432'; protected $db = null; // Class constructor. Default port for PostgreSQL is 5432 final public function __construct($host, $user, $password, $database, $port = self::port, $options = null) { if (empty($host)) throw new Exception('Hostname is not given'); $this->db = $this->connect($host, $user, $password, $database, $port, $options); }
final public function __destruct() { if (isset($this->db) || null !== $this->db) pg_close($this->db); foreach ($this as $key => $value) unset($this->{$key}); }
final public function connect($host, $user, $password, $database, $port = self::port, $options = null) { if (null !== $options) $options = null; $connect_string = 'host='.$host.' port='.$port.' dbname='.$database.' user='.$user.' password='.$password.$options; if(!$this->db = @pg_connect($connect_string)) throw new sqlError('Cannot connect to server!'); }
В методe connect при вызове pg_connect приходится принудительно глушить ошибку, иначе она вылазит на экран и естественно выполнение скрипта обрывается. Пробовал конструкцию вида
Код:
$this->db = pg_connect($connection_string) or throw new sqlError('Cannot connect to server');
Вылазит Parse error, нельзя так писать... Что, теперь везде принудительно надо глушить ошибки встроенных функций?! HELP! Добавлено спустя 35 минут, 3 секунды Ещё ляп один, уже при работе с PostgreSQL
Код:
if(!$this->db = pg_connect($connect_string)) { throw new sqlError('Cannot connect to database server! Reason: '.pg_last_error()); }
Знаете что этот код выводит?
Код:
Warning: pg_connect() [function.pg-connect]: Unable to connect to PostgreSQL server: FATAL: password authentication failed for user "iirclv" in C:\engine\db.php on line 30
Warning: pg_last_error() [function.pg-last-error]: No PostgreSQL link opened yet in C:\engine\db.php on line 32
Ладно первый Warning, хоть и я писал о нём выше, но второй меня убил на повал! Спрашивается, как мне теперь узнать в коде ошибку, из-за которой у меня сбой скрипта при display_errors = 0 что бы понять вообще что мне на экран выводить?
*_Psih плачет и хочет обратно на MySQL, там какраз новенькая объектная библиотека появилась (mysqli)*
Member
Статус: Не в сети Регистрация: 18.11.2002 Откуда: не вернуться
На счёт последнего просто введён не правильный пароль, а pg_last_error тут просто не при деле так как она выдаёт ошибку ресурса ($this->db) а его в данном случае быть не может.
В итоге советую просто выводить ошибки не на экран а в файл, а pg_last_error() убрать хотя бы только там. Добавлено спустя 2 минуты, 19 секунд
Код:
if (isset($this->db) || null !== $this->db) pg_close($this->db);
Какой тут нафик isset если есть генеальная (для этого случая) функция is_resource()
_________________ Летели гуси-лебеди, а им навстречу - воробьи-пингвины и соловьи-страусы...
Member
Статус: Не в сети Регистрация: 28.03.2005 Откуда: Латвия, Рига
virus писал(а):
На счёт последнего просто введён не правильный пароль, а pg_last_error тут просто не при деле так как она выдаёт ошибку ресурса ($this->db) а его в данном случае быть не может.
В итоге советую просто выводить ошибки не на экран а в файл, а pg_last_error() убрать хотя бы только там. Добавлено спустя 2 минуты, 19 секунд
Код:
if (isset($this->db) || null !== $this->db) pg_close($this->db);
Какой тут нафик isset если есть генеальная (для этого случая) функция is_resource()
Дык, библиотека mysql при ошибке подключения вобще-то выдавала текст ошибки: Incorect password for user bla bla bla.. Я специально ошибку допустил, что бы сделать её отлов...
Member
Статус: Не в сети Регистрация: 18.11.2002 Откуда: не вернуться
_Psih pg_last_error() запрашивает значение с самого сервера СУБД причём realtime (а mysql_error() лишь возвращает уже полученный ответ) в том то и их разница...
_________________ Летели гуси-лебеди, а им навстречу - воробьи-пингвины и соловьи-страусы...
Member
Статус: Не в сети Регистрация: 18.11.2002 Откуда: не вернуться
Кстати почти оф-топ, не понимаю зачем нужен PostgreSQL среднестатестическому сайту,
MySQL обладает достаточной скоростью и функциональностью для типичных задач...
(другое дело нагруженным сайтам он может помочь,
т.к там давольно обширные возможности по оптимизации)
_________________ Летели гуси-лебеди, а им навстречу - воробьи-пингвины и соловьи-страусы...
Member
Статус: Не в сети Регистрация: 28.03.2005 Откуда: Латвия, Рига
virus писал(а):
Кстати почти оф-топ, не понимаю зачем нужен PostgreSQL среднестатестическому сайту, MySQL обладает достаточной скоростью и функциональностью для типичных задач... (другое дело нагруженным сайтам он может помочь, т.к там давольно обширные возможности по оптимизации)
Гх, это далеко не средний сайтик... там есть такие операции, что даже Postgre загибаетсянафиг, если неправильно SQL запрос написать... к тому же там обязательна реляция + в добавок к UnrealIRCD SuxServices работают на Postgre. Посему выбора на какой базе писать то и небыло....
Member
Статус: Не в сети Регистрация: 28.03.2005 Откуда: Латвия, Рига
virus писал(а):
_Psih писал(а):
если неправильно SQL запрос написать...
Мы говорим о "правильных" запрсах, а не о скиптах "сопливых" школьников
На правах оф-топа, сейчас пощупаю MySQL-5.0.18 под FreeBSD ух кайф
Дело даже не в том, школьник или нет... Там запросы идут уже не просто
Код:
SELECT bla FROM table WHERE field1 = a AND field2 = b;
А куда сложнее. Всякие групировки, суммы, подзапросы, самописные процедуры, JOIN'ы. В итоге сам запрос получается в 7-8 строк при длинне строчки в 80-120 символов Тут уже и знающий человек пока добъётся эффективности, можно пару раз свалить саму базу долго выполняющимся запросом минуты так на 1.5-2 У меня бывало, как пойдёт, так IRC сервисы по таймауту просто обрубались Лез на сервер и запускал их по новой
Member
Статус: Не в сети Регистрация: 03.01.2003 Откуда: Ростов-на-Дону
_Psih Оптимизируй запросы, есть масса способов, выкладвый самый навароченный по твоему мнению самый навароченный скрипт, чё нить при придумаем. Добавлено спустя 1 минуту, 51 секунду Совсем недавно пользовался такой программой, называется она SQL Monitor, для тех кто незнает, данная программа позволяет перехватывать SQL запросы на сервер, отправленые любой программой.
Никто не когда не занимался написание подобной программой, для перехвата SQL запросов. Язык на которм это можно реальзовтаь не имеет значения. Заранее благодарю. У кого нибудь есть какие-нибудь идея относительно как это можно перехватить.
Ведь если SQL Monitor это может делать, значит и самому можно написать.
_________________ Just Zerg! Остановим деградацию русского языка, скажем нет удафкомовской лексике!!
А зачем это среднестатестическому сайту ? (в минимум 50% случаев это лишнее)
Трекер к среднестатистическому не отнесёшь. Посещаемость более 10 тысяч в день, причём народ там висит постоянно, в среднем 250 человек всегда online + ещё сбор статистики по торрентам в среднем с 10 тысяч соединений... крч в базу в среднем 150 запросов в секунду (больше она не могла обработать, да и просто выставил ограничения для apache, что бы через чур много запросов не принимал). Так что тут с оптимизацией ой как тяжко. И Join'ов там прилично
Member
Статус: Не в сети Регистрация: 18.11.2002 Откуда: не вернуться
_Psih Кстати как ты оцениваешь сложность написания скрипта игры в BlackJack ?
(в принципе логика там давольно проста, по этому у меня возникла мысль попробовать)
И как лучше его сделать, с приминением AJAX или нет ?
_________________ Летели гуси-лебеди, а им навстречу - воробьи-пингвины и соловьи-страусы...
Member
Статус: Не в сети Регистрация: 28.03.2005 Откуда: Латвия, Рига
Ну сложность, имхо, не сильно высокая, сколько трудоёмкая. Думаю где-то средней сложности. Сам не пробовал.
Писать думаю стоит с AJAX, хоть какая-то динамичность И не надо постоянно перегружать страницы. Но вообще я AJAX не пробовал, так что я его возможности не сильно знаю... Попробовать стоит Добавлено спустя 5 минут, 20 секунд Да, сегодня закончил перенос трекера на Linux (Gentoo). Над чем ещё поработать есть, вместо lighttpd + FastCGI вернул Apache + PHP 5.1.1... lighttpd надо ещё уметь настраивать... что-то не так скомпилил... да и Апач отличается от той же BSD по конфигу неплохо... тут потоки, все дела... MySQL себя чувствует с LinuxThreads просто прекрасно, лучшей системы для него не придумаешь. Об apache - вопрос спорный.
И вообще, мож кто знает где можно почтитать про настройку apache с threads?
Member
Статус: Не в сети Регистрация: 18.11.2002 Откуда: не вернуться
_Psih писал(а):
Но вообще я AJAX не пробовал, так что я его возможности не сильно знаю...
Ну в принципе для динамики можно не столько AJAX скольно простой JS (для кросс-браузерности) В принципе многие используют приёмы типа document.write('<script src"asd.js"></script>') ну и в таком стиле, так что сложностей с AJAX я не вижу, а вот очень боюсь я того что такое казалось бы простое на первый взгляд дело превратится в 3 строчки кода и в мегабайты простой рутины, и именно это пугает...
_Psih писал(а):
сегодня закончил перенос трекера на Linux (Gentoo)
А я вот тоже увлёкся Линухами, сейчас например пишу из под Ubuntu LiveCD (я этих Live-ов скачал десятки, и пробую каждый, причём сначала на виртуальном компе а уже потом на реальном)
_Psih писал(а):
MySQL себя чувствует с LinuxThreads просто прекрасно
Так в рнрклубовском журнале приводили тесты скорости мускула под разными осями и там тоже сказали что с LinuxThreads он просто "летает"
_________________ Летели гуси-лебеди, а им навстречу - воробьи-пингвины и соловьи-страусы...
Member
Статус: Не в сети Регистрация: 28.03.2005 Откуда: Латвия, Рига
virus писал(а):
_Psih писал(а):
MySQL себя чувствует с LinuxThreads просто прекрасно
Так в рнрклубовском журнале приводили тесты скорости мускула под разными осями и там тоже сказали что с LinuxThreads он просто "летает"
Это я читал, правда давно обзор был, там был BSD, Solaris и Linux на базе ядра 2.4. Щас 2.6 я юзаю ядро, даже не смотря на Load avarages от 2 до 4 время ответа сервера намного меньше + он отвечает более стабильно, на BSD было просто или ошибка соединения с MySQL, или вообще ответа небыло. Посему я доволен. Осталось довести настройки до оптимального состояния
Кстати, говорят что apache как-то шустрее на BSD пашет... Может, когда он без LinuxThreads пашет, это и верно, но если их подключить при компиляции, насколько шустрее он начинает работать? С поправкой на то что у меня 2xCPU система.
Насчёт рутины... ну половина будет точно рутиной, ведь HTML верстать то надо Но алгоритм будет не из лёгких, т.к. это всё-же скрипты, а не полноценная программа. Придётся поизвращятся
LiveCD есть LiveCD, не у всех дистров они есть Я например подсел на Gentoo. Он единственный полностью основан на системе портов (установка приложения происходит его сборкой из исходных кодов), что мне нравится из-за подгонки любого приложения под конкретный комп. Хотя конечно если это не хотя-бы 1.5-2 GHz , то сборка довольно долго идёт. При установке это нудно :/ (Я благо собирал систему с присутствием второго компа всегда )
Member
Статус: Не в сети Регистрация: 28.03.2005 Откуда: Латвия, Рига
virus
Ты Zend Studio юзал?
А то у меня выбор чё ща заюзать: Visual Studion 2005 + VS.php (модуль для работы с PHP в VS) или Zend Studio.. тут опытный чел грит VS лучше
Member
Статус: Не в сети Регистрация: 28.12.2003 Откуда: Vladivostok
_Psih я раньше когда басик изучал, работал с висуал студио.нет и считал что лучше ничего нету (и щас так думаю). потом пересел на пхп. попробовал студио.нет + модуль для работы с пхп. Не понравилось. нето. сейчас сижу на зенде
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 3
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения