я кстати про гит вообще не понял причем он тут. в случае с ПОРТАЛОМ УПАКОВАННЫМ В ОДИН АРХИВ чо сразу стало проще смотреть модификации отдельно взятых файлов? ну или допустим программисту нужно проверить какую-то фичу. так он может написать какой-то хук или просто в стеш спрятать оригинальный файл а в вашем случае придется еще и упаковку постоянную делать... печально до сих пор не увидеть плюсов-минусов упаковки файлов...
Я выше упомянул, но вы похоже пропустили. Любой файл в архиве можно заменить разместив такой же в файловой системе. Вместо файла внутри архива будет запущен ваш в файловой системе. Это относится и к основному скрипту который это делает. Разместив index.php в корне архив найден его и первых трех строчках кода запустит файл файл вместо своего index.php в архиве Для изменений чего то не обязательно пересобирать архив. Добавление новых шаблонов к системе также делается просто добавлением их в файловую систему. https://github.com/mpak2/mpak.su/tree/master/themes Добавление новых разделов идет закидыванием файлов в директорию https://github.com/mpak2/mpak.su/tree/master/modules
Вот сайт работающий их такого архива http://gektarkoles.ru/. Под копирайтом стоит время генерации каждой из страниц
Ну взять например helloword на wordpress или фреймворка и синтетически прогнать тесты с архивом и без. Научный подход
Это не вордпресс. Собрать такое же на вордпрессе при желании можете сами. Не знаком с этой системой поэтому ничем не могу помочь. Добавлено спустя 7 минут 20 секунд: Тут не архив главное. Вы оцените пересборку. Возможность прямо в шаблоне обратится к любому из параметров из базы данных С примеру список статей текущей категории <? mpre(rb("index", "cat_id", "id", $cat['id'])) ?> Выдаст все статьи категории $cat вторичный ключ категории в таблице статей будет называться "cat_id" Добавлено спустя 32 секунды: Что именно вам не понравилось?
ну например пару мегабайт можно выкинуть потому что это картинки а следовательно статика а следовательно не пхп-машина должна с ними работать. еще наверное столько это это жс. его тоже в статику. а еще минифицировать. и потом уже к вашему коду в котором с одной стороны нихера не понятно эмпре(арби()) - только у вас ассоциируется с выбором статей текущей категории. при этом несмотря на совершенно непонятные имена функций мы видим примерно 70% кода занимают комментарии этого кода. ну или вот например вот такая тряпка: Код (PHP): function mpqw($sql, $info = null, $conn = null){ global $conf; $mt = microtime(true); $result = mysql_query($sql, ($conn ? $conn : $conf['db']['conn'])); if ($error = mysql_error()){// mpre($conf['user']); if(!empty($conf['modules']['sqlanaliz']['access']) && (array_search($conf['user']['uname'], explode(",", $conf['settings']['admin_usr'])) !== false)){ echo "<p>$sql<br><div color=red>".mysql_error()."</div>"; } $check = array( "Table '{$conf['db']['name']}.mp_blocks_reg_modules' doesn't exist" => array( "SELECT * FROM {$conf['db']['prefix']}blocks_reg_modules" => array( "CREATE TABLE `{$conf['db']['prefix']}blocks_reg_modules` ( `id` int(11) NOT NULL AUTO_INCREMENT, `sort` int(11) NOT NULL, `reg_id` int(11) NOT NULL, `modules_index` int(11) NOT NULL, `name` varchar(255) NOT NULL, `theme` varchar(255) NOT NULL, `uri` varchar(255) NOT NULL, PRIMARY KEY (`id`), KEY `sort` (`sort`), KEY `modules_index` (`modules_index`) ) ENGINE=InnoDB DEFAULT CHARSET=cp1251", "INSERT INTO `{$conf['db']['prefix']}blocks` (`id`, `file` ,`name` ,`theme` ,`shablon` ,`access` ,`rid` ,`orderby` ,`param` ,`enabled`) VALUES (999, 'modules/blocks/update.php' ,'Обновление блоков' ,'zhiraf' ,'' ,'0' ,'-1' ,'0' ,'' ,'1');", "INSERT INTO `{$conf['db']['prefix']}blocks_gaccess` (`bid` ,`gid` ,`access` ,`description`) VALUES (999 , (SELECT id FROM mp_users_grp WHERE name='Администратор'),'1' ,'')", "INSERT INTO mp_blocks_reg SET id=-2, term=1, description='Админ', reg_id=2", "INSERT INTO mp_blocks_reg SET id=-1, term=1, description='Админ', reg_id=1", ), ), "Table '{$conf['db']['name']}.{$conf['db']['prefix']}users_city' doesn't exist" => array( "SHOW COLUMNS FROM" => array( "CREATE TABLE `{$conf['db']['prefix']}users_city` (`id` int(11) NOT NULL AUTO_INCREMENT, `country` varchar(255) NOT NULL, `region_id` int(11) NOT NULL, `name` varchar(255) NOT NULL, `lat` float NOT NULL, `lng` float NOT NULL, `description` text NOT NULL, PRIMARY KEY (`id`), KEY `name` (`name`), KEY `region_id` (`region_id`)) ENGINE=InnoDB DEFAULT CHARSET=cp1251", ), ), "Table '{$conf['db']['name']}.{$conf['db']['prefix']}users_region' doesn't exist" => array( "SHOW COLUMNS FROM" => array( "CREATE TABLE `{$conf['db']['prefix']}users_region` (`id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(255) NOT NULL, `description` text NOT NULL, PRIMARY KEY (`id`), KEY `name` (`name`)) ENGINE=InnoDB DEFAULT CHARSET=cp1251", ), ), "Table '{$conf['db']['name']}.{$conf['db']['prefix']}sess_city' doesn't exist" => array( "SHOW COLUMNS FROM `{$conf['db']['name']}sess_city`" => array( "CREATE TABLE `{$conf['db']['prefix']}users_city` (`id` INT(11) NOT NULL PRIMARY KEY AUTO_INCREMENT, `name` varchar(255) NOT NULL, `description` text NOT NULL) ENGINE = InnoDB", "ALTER TABLE `{$conf['db']['prefix']}users_city` ADD INDEX (`name`)", ), ), "Table '{$conf['db']['name']}.{$conf['db']['prefix']}menu_index' doesn't exist" => array( "SELECT *, href AS link FROM {$conf['db']['prefix']}menu_index WHERE" => array( "ALTER TABLE `{$conf['db']['prefix']}menu` RENAME `{$conf['db']['prefix']}menu_index`", "ALTER TABLE `{$conf['db']['prefix']}menu_index` CHANGE `pid` `index_id` int(11) NOT NULL", "ALTER TABLE `{$conf['db']['prefix']}menu_index` ADD INDEX (`index_id`)", "ALTER TABLE `{$conf['db']['prefix']}menu_index` CHANGE `rid` `region_id` int(11) NOT NULL", "ALTER TABLE `{$conf['db']['prefix']}menu_index` ADD INDEX (`region_id`)", "ALTER TABLE `{$conf['db']['prefix']}menu_index` CHANGE `orderby` `sort` int(11) NOT NULL", "ALTER TABLE `{$conf['db']['prefix']}menu_index` ADD INDEX (`sort`)", "ALTER TABLE `{$conf['db']['prefix']}menu_index` CHANGE `link` `href` varchar(255) NOT NULL ", ), ), "Table '{$conf['db']['name']}.{$conf['db']['prefix']}search_index' doesn't exist" => array( "INSERT INTO {$conf['db']['prefix']}search_index" => array( "CREATE TABLE `{$conf['db']['prefix']}search_index` (`id` int(11) NOT NULL AUTO_INCREMENT,`uid` int(11) NOT NULL,`time` int(11) NOT NULL,`num` int(11) NOT NULL,`name` varchar(255) NOT NULL,`count` int(11) NOT NULL,`pages` int(11) NOT NULL,`ip` varchar(255) NOT NULL,PRIMARY KEY (`id`),KEY `uid` (`uid`),KEY `num` (`num`),KEY `uid_2` (`uid`),KEY `time` (`time`)) ENGINE=MyISAM DEFAULT CHARSET=cp1251", ), ), "Table '{$conf['db']['name']}.{$conf['db']['prefix']}users_geoname' doesn't exist" => array( "SELECT id, CONCAT(name, ' (', countryName, ')') FROM {$conf['db']['prefix']}users_geoname" => array( "CREATE TABLE `{$conf['db']['prefix']}users_geoname` (`id` int(11) NOT NULL AUTO_INCREMENT, `time` int(11) NOT NULL, `uid` int(11) NOT NULL, `continentCode` varchar(255) NOT NULL, `countryCode` varchar(255) NOT NULL, `countryName` varchar(255) NOT NULL, `fclName` varchar(255) NOT NULL, `fcode` varchar(255) NOT NULL, `fcodeName` varchar(255) NOT NULL, `geonameId` varchar(255) NOT NULL, `lat` varchar(255) NOT NULL, `lng` varchar(255) NOT NULL, `name` varchar(255) NOT NULL, `population` varchar(255) NOT NULL, `toponymName` varchar(255) NOT NULL, PRIMARY KEY (`id`), KEY `uid` (`uid`), KEY `geonameId` (`geonameId`)) ENGINE=InnoDB DEFAULT CHARSET=cp1251", ), ), "Unknown column 's.geo' in 'where clause'" => array( "SELECT s.*, u.name AS uname" => array( "ALTER TABLE `{$conf['db']['prefix']}sess` ADD `geo` varchar(255) NOT NULL", ), ), "Unknown column 'sort' in 'order clause'" => array( "SELECT * FROM {$conf['db']['prefix']}blocks_reg" => array( "ALTER TABLE `{$conf['db']['prefix']}blocks_reg` ADD `sort` int(11) NOT NULL AFTER `id`", "UPDATE {$conf['db']['prefix']}blocks_reg SET sort=id", ), ), "Unknown column 'sort' in 'where clause'" => array( "SELECT COUNT(*) FROM {$conf['db']['prefix']}blocks_reg" => array( "ALTER TABLE `{$conf['db']['prefix']}blocks_reg` ADD `sort` int(11) NOT NULL AFTER `id`", "UPDATE {$conf['db']['prefix']}blocks_reg SET sort=id", ), ), "Table '{$conf['db']['name']}.{$conf['db']['prefix']}search_keys_tabs' doesn't exist" => array( "SELECT i.*, k.id AS keys_id, k.name as keys_name, kt.name AS tabs_name" => array( "CREATE TABLE `{$conf['db']['prefix']}search_keys_tabs` ( `id` int(11) NOT NULL AUTO_INCREMENT, `keys_id` int(11) NOT NULL, `time` int(11) NOT NULL, `uid` int(11) NOT NULL, `name` varchar(255) NOT NULL, PRIMARY KEY (`id`), KEY `search_keys_id` (`keys_id`), KEY `time` (`time`), KEY `uid` (`uid`) ) ENGINE=InnoDB AUTO_INCREMENT=43 DEFAULT CHARSET=cp1251", ), ), "Table '{$conf['db']['name']}.{$conf['db']['prefix']}search_keys' doesn't exist" => array( "SELECT i.*, k.id AS keys_id, k.name as keys_name, kt.name AS tabs_name" => array( "CREATE TABLE `{$conf['db']['prefix']}search_keys` ( `id` int(11) NOT NULL AUTO_INCREMENT, `index_id` int(11) NOT NULL, `name` varchar(255) NOT NULL, `tab` varchar(255) NOT NULL, PRIMARY KEY (`id`), KEY `index_id` (`index_id`) ) ENGINE=InnoDB AUTO_INCREMENT=80 DEFAULT CHARSET=cp1251", "ALTER TABLE `{$conf['db']['prefix']}search_index` CHANGE `search` `name` varchar(255) NOT NULL", ), ), "Unknown column 'term' in 'where clause'" => array( "SELECT * FROM {$conf['db']['prefix']}blocks_reg AS r WHERE r.reg_id=0 AND" => array( "ALTER TABLE `{$conf['db']['prefix']}blocks_reg` ADD `term` int(11) NOT NULL AFTER `id`", "ALTER TABLE `{$conf['db']['prefix']}blocks_reg` ADD INDEX (`term`)", ), ), /* "Table '{$conf['db']['name']}.{$conf['db']['prefix']}users_geoname' doesn't exist" => array( "SELECT id, CONCAT(name, \' (\', countryName, \')\') FROM mp_users_geoname" => array( "", "", ), ),*/ "Table '{$conf['db']['name']}.{$conf['db']['prefix']}users_lang_words' doesn't exist" => array( "SELECT id, name FROM {$conf['db']['prefix']}users_lang_words" => array( "CREATE TABLE `{$conf['db']['prefix']}users_lang_words` ( `id` int(11) NOT NULL AUTO_INCREMENT, `modules` varchar(255) NOT NULL, `name` varchar(255) NOT NULL, `description` varchar(255) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=cp1251", ), ), "Table '{$conf['db']['name']}.{$conf['db']['prefix']}users_lang' doesn't exist" => array( "SELECT id, name FROM {$conf['db']['prefix']}users_lang" => array( "CREATE TABLE `{$conf['db']['prefix']}users_lang` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(255) NOT NULL, `description` varchar(255) NOT NULL, `sort` int(11) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=12 DEFAULT CHARSET=cp1251", "CREATE TABLE `{$conf['db']['prefix']}users_lang_words` ( `id` int(11) NOT NULL AUTO_INCREMENT, `modules` varchar(255) NOT NULL, `name` varchar(255) NOT NULL, `description` varchar(255) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=cp1251", "CREATE TABLE `{$conf['db']['prefix']}users_lang_translation` ( `id` int(11) NOT NULL AUTO_INCREMENT, `time` int(11) NOT NULL, `uid` int(11) NOT NULL, `lang_id` int(11) NOT NULL, `lang_words_id` int(11) NOT NULL, `name` varchar(255) NOT NULL, PRIMARY KEY (`id`), UNIQUE KEY `name` (`name`,`lang_id`), KEY `lang_words_id` (`lang_words_id`) ) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=cp1251" ), ), "Table '{$conf['db']['name']}.{$conf['db']['prefix']}users_anket_type' doesn't exist" => array( "SELECT id, name FROM {$conf['db']['prefix']}users_anket_type" => array( "CREATE TABLE `{$conf['db']['prefix']}users_anket_type` ( `id` int(11) NOT NULL AUTO_INCREMENT, `sort` int(11) NOT NULL, `name` varchar(255) NOT NULL, `description` varchar(255) NOT NULL, `border` int(11) NOT NULL, PRIMARY KEY (`id`), KEY `sort` (`sort`) ) ENGINE=InnoDB DEFAULT CHARSET=cp1251", "CREATE TABLE `{$conf['db']['prefix']}users_anket` ( `id` int(11) NOT NULL AUTO_INCREMENT, `sort` int(11) NOT NULL, `anket_type_id` int(11) NOT NULL, `name` varchar(255) NOT NULL, `required` int(11) NOT NULL, `alias` varchar(255) NOT NULL, `description` varchar(255) NOT NULL, `reg` int(11) NOT NULL, PRIMARY KEY (`id`), KEY `sort` (`sort`), KEY `anket_type_id` (`anket_type_id`) ) ENGINE=InnoDB AUTO_INCREMENT=32 DEFAULT CHARSET=cp1251", "CREATE TABLE `{$conf['db']['prefix']}users_anket_data` ( `id` int(11) NOT NULL AUTO_INCREMENT, `time` int(11) NOT NULL, `uid` int(11) NOT NULL, `anket_id` int(11) NOT NULL, `name` varchar(255) NOT NULL, `description` varchar(255) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=cp1251" ), ), /* "Table '{$conf['db']['name']}.{$conf['db']['prefix']}users_geoname' doesn't exist" => array( "SELECT id, name FROM {$conf['db']['prefix']}users_geoname" => array( "CREATE TABLE `mp_users_geoname` ( `id` int(11) NOT NULL AUTO_INCREMENT, `time` int(11) NOT NULL, `uid` int(11) NOT NULL, `continentCode` varchar(255) NOT NULL, `countryCode` varchar(255) NOT NULL, `countryName` varchar(255) NOT NULL, `fclName` varchar(255) NOT NULL, `fcode` varchar(255) NOT NULL, `fcodeName` varchar(255) NOT NULL, `geonameId` varchar(255) NOT NULL, `lat` varchar(255) NOT NULL, `lng` varchar(255) NOT NULL, `name` varchar(255) NOT NULL, `population` varchar(255) NOT NULL, `toponymName` varchar(255) NOT NULL, PRIMARY KEY (`id`), KEY `uid` (`uid`), KEY `geonameId` (`geonameId`) ) ENGINE=InnoDB DEFAULT CHARSET=cp1251", ), ),*/ "Table '{$conf['db']['name']}.{$conf['db']['prefix']}users_event_notice' doesn't exist" => array( "SELECT * FROM {$conf['db']['prefix']}users_event_notice" => array( "CREATE TABLE `{$conf['db']['prefix']}users_event_notice` ( `id` int(11) NOT NULL AUTO_INCREMENT, `time` int(11) NOT NULL, `uid` int(11) NOT NULL, `grp_id` int(11) NOT NULL, `type` varchar(255) NOT NULL, `event_id` int(11) NOT NULL, `log` int(11) NOT NULL, `count` int(11) NOT NULL, `name` varchar(255) NOT NULL, `text` text NOT NULL, `zam` text NOT NULL, PRIMARY KEY (`id`), KEY `event_id` (`event_id`), KEY `uid` (`uid`), KEY `grp_id` (`grp_id`) ) ENGINE=InnoDB DEFAULT CHARSET=cp1251", "CREATE TABLE `mp_users_event_mess` ( `id` int(11) NOT NULL AUTO_INCREMENT, `time` int(11) NOT NULL, `uid` int(11) NOT NULL, `event_notice_id` int(11) NOT NULL, `dst` varchar(255) NOT NULL, `name` varchar(255) NOT NULL, `text` text NOT NULL, `response` varchar(255) NOT NULL, PRIMARY KEY (`id`), KEY `time` (`time`), KEY `uid` (`uid`) ) ENGINE=InnoDB DEFAULT CHARSET=cp1251", ), ), "Unknown column 'm.grp_id' in 'where clause'" => array( "SELECT g.id, g.name FROM {$conf['db']['prefix']}users_grp as g, {$conf['db']['prefix']}users_mem as m WHERE" => array( "ALTER TABLE `{$conf['db']['prefix']}users_mem` CHANGE `gid` `grp_id` int(11) NOT NULL", ), ), "Table '{$conf['db']['name']}.{$conf['db']['prefix']}users_event_logs' doesn't exist" => array( "INSERT DELAYED INTO {$conf['db']['prefix']}users_event_logs SET" => array( "ALTER TABLE {$conf['db']['prefix']}users_event_log RENAME mp_users_event_logs", ), ), "Unknown column 'type_id' in 'where clause'" => array( "SELECT id FROM {$conf['db']['prefix']}users WHERE type_id=1" => array( "ALTER TABLE `{$conf['db']['prefix']}users` CHANGE `tid` `type_id` int(11) NOT NULL", "ALTER TABLE `{$conf['db']['prefix']}users` ADD INDEX (`type_id`)", ), ), "Unknown column 'id.cat_id' in 'on clause'" => array( "SELECT c.*, COUNT(DISTINCT id.id) AS cnt FROM mp_pages_cat" => array( "ALTER TABLE `{$conf['db']['prefix']}pages_index` CHANGE `kid` `cat_id` int(11) NOT NULL", "ALTER TABLE `{$conf['db']['prefix']}pages_index` ADD INDEX (cat_id)", ), ), "Unknown column 'p.kat_id' in 'on clause'" => array( "SELECT SQL_CALC_FOUND_ROWS p.*, p.id AS id" => array( "ALTER TABLE `{$conf['db']['prefix']}news_post` CHANGE `kid` `kat_id` int(11) NOT NULL", "ALTER TABLE `{$conf['db']['prefix']}news_post` CHANGE `tema` `name` varchar(255) NOT NULL", "ALTER TABLE `{$conf['db']['prefix']}news_post` ADD INDEX (uid)", ), ), "Unknown column 'w.plan_id' in 'where clause'" => array( "SELECT w.*, u.name FROM {$conf['db']['prefix']}develop_work" => array( "ALTER TABLE `{$conf['db']['prefix']}develop_work` CHANGE `pid` `plan_id` int(11) NOT NULL", "ALTER TABLE `{$conf['db']['prefix']}develop_work` ADD INDEX (plan_id)", "ALTER TABLE `{$conf['db']['prefix']}develop_work` ADD `uid` int(11) NOT NULL AFTER `plan_id`" ), ), "Unknown column 'performers_id' in 'field list'" => array( "INSERT INTO {$conf['db']['prefix']}develop_plan" => array( "ALTER TABLE `{$conf['db']['prefix']}develop_plan` ADD `performers_id` int(11) NOT NULL AFTER `cat_id`", "ALTER TABLE `{$conf['db']['prefix']}develop_plan` ADD INDEX (performers_id)", ), ), "Unknown column 'plan_id' in 'field list'" => array( "SELECT plan_id, COUNT(*) FROM {$conf['db']['prefix']}develop_golos" => array( "ALTER TABLE `{$conf['db']['prefix']}develop_golos` CHANGE `pid` `plan_id` int(11) NOT NULL", "ALTER TABLE `{$conf['db']['prefix']}develop_golos` CHANGE `sid` `uid` int(11) NOT NULL", ), ), "Table '{$conf['db']['name']}.{$conf['db']['prefix']}develop_performers' doesn't exist" => array( "SELECT p.*, CONCAT(u.name, ' (', p.name, ')') AS name FROM {$conf['db']['prefix']}develop_performers" => array( "CREATE TABLE `{$conf['db']['prefix']}develop_performers` (`id` int(11) NOT NULL AUTO_INCREMENT,`time` int(11) NOT NULL,`uid` int(11) NOT NULL,`name` varchar(255) NOT NULL,`description` text NOT NULL, PRIMARY KEY (`id`), KEY `time` (`time`),KEY `uid` (`uid`)) ENGINE=InnoDB DEFAULT CHARSET=cp1251", "INSERT INTO `{$conf['db']['prefix']}settings` (`modpath`, `name`, `value`, `aid`, `description`) VALUES ('develop', 'develop_golos', 'Голос', '0', 'Название таблицы')", "INSERT INTO `{$conf['db']['prefix']}settings` (`modpath`, `name`, `value`, `aid`, `description`) VALUES ('develop', 'develop_kat', 'Категории', '0', 'Название таблицы')", "INSERT INTO `{$conf['db']['prefix']}settings` (`modpath`, `name`, `value`, `aid`, `description`) VALUES ('develop', 'develop_plan', 'Задачи', '0', 'Название таблицы')", "INSERT INTO `{$conf['db']['prefix']}settings` (`modpath`, `name`, `value`, `aid`, `description`) VALUES ('develop', 'develop_work', 'Работа', '0', 'Название таблицы')", "INSERT INTO `{$conf['db']['prefix']}settings` (`modpath`, `name`, `value`, `aid`, `description`) VALUES ('develop', 'develop_performers', 'Исполнители', '0', 'Название таблицы')", ), ), "Unknown column 'p.cat_id' in 'field list'" => array( "SELECT p.*, p.id AS plan_id, p.cat_id, COUNT(*) AS cnt FROM {$conf['db']['prefix']}develop_plan" => array( "ALTER TABLE `{$conf['db']['prefix']}develop_plan` CHANGE `kid` `cat_id` int(11) NOT NULL", ), ), "Table '{$conf['db']['name']}.{$conf['db']['prefix']}develop_cat' doesn't exist" => array( "SELECT * FROM {$conf['db']['prefix']}develop_cat" => array( "ALTER TABLE {$conf['db']['prefix']}develop_kat RENAME {$conf['db']['prefix']}develop_cat", "ALTER TABLE `{$conf['db']['prefix']}develop_cat` ADD INDEX (sort)", ), ), "Unknown column 'priority' in 'order clause'" => array( "SELECT * FROM {$conf['db']['prefix']}modules" => array( "ALTER TABLE `{$conf['db']['prefix']}modules` ADD `priority` int(11) NOT NULL", "ALTER TABLE `{$conf['db']['prefix']}modules` ADD INDEX (`priority`)", ), ), "Unknown column 'g.hide' in 'where clause'" => array( "SELECT g.* FROM {$conf['db']['prefix']}gbook AS g" => array( "ALTER TABLE `{$conf['db']['prefix']}gbook` CHANGE `vid` `hide` INT(11) NOT NULL", "ALTER TABLE `{$conf['db']['prefix']}gbook` ADD INDEX (hide)", ), ), "DELAYED option not supported for table" => array( "INSERT DELAYED INTO {$conf['db']['prefix']}users_event_log SET" => array( "ALTER TABLE {$conf['db']['prefix']}users_event_log ENGINE=MyISAM" ), ), "Unknown column 'r.fn' in 'where clause'" => array( "SELECT * FROM {$conf['db']['prefix']}blocks_reg AS r WHERE" => array( "ALTER TABLE `{$conf['db']['prefix']}blocks_reg` ADD `fn` varchar(255) NOT NULL", "ALTER TABLE `{$conf['db']['prefix']}blocks_reg` ADD INDEX (fn)", ), ), "Unknown column 'log_last' in 'field list'" => array( "INSERT INTO {$conf['db']['prefix']}users_event SET" => array( "ALTER TABLE `{$conf['db']['prefix']}users_event` ADD `log_last` int(11) NOT NULL AFTER `log`", ), ), "Unknown column 'last' in 'field list'" => array( "INSERT INTO {$conf['db']['prefix']}users_event SET" => array( "ALTER TABLE `{$conf['db']['prefix']}users_event` ADD `last` int(11) NOT NULL AFTER `log`", "ALTER TABLE `{$conf['db']['prefix']}users_event` ADD `max` int(11) NOT NULL AFTER `last`", "ALTER TABLE `{$conf['db']['prefix']}users_event` ADD `min` int(11) NOT NULL AFTER `max`", ), ), "Unknown column 'faq.cat_id' in 'on clause'" => array( "SELECT cat.*, COUNT(*) AS cnt FROM {$conf['db']['prefix']}faq_cat" => array( "ALTER TABLE `{$conf['db']['prefix']}faq` CHANGE `cid` `cat_id` int(11) NOT NULL", "ALTER TABLE `{$conf['db']['prefix']}faq` ADD INDEX (cat_id)", "ALTER TABLE `{$conf['db']['prefix']}faq` ADD INDEX (hide)", ), ), "Table 'shop_mpak_su.{$conf['db']['prefix']}faq' doesn't exist" => array( "SELECT cat.*, COUNT(*) AS cnt FROM {$conf['db']['prefix']}faq_cat" => array( "ALTER TABLE {$conf['db']['prefix']}faq RENAME {$conf['db']['prefix']}faq_index", ), ), "Unknown column 'reg_id' in 'where clause'" => array( "SELECT * FROM {$conf['db']['prefix']}blocks_reg" => array( "ALTER TABLE `{$conf['db']['prefix']}blocks_reg` ADD `reg_id` int(11) NOT NULL AFTER `id`", "ALTER TABLE `{$conf['db']['prefix']}blocks_reg` ADD INDEX (reg_id)", ), ), "Unknown column 'cmail' in 'field list'" => array( "UPDATE {$conf['db']['prefix']}users_event SET cmail=cmail+1" => array( "ALTER TABLE `{$conf['db']['prefix']}users_event` ADD `cmail` int(11) NOT NULL AFTER `send`", ), ), "Unknown column 'zam' in 'field list'" => array( "INSERT INTO {$conf['db']['prefix']}users_event_log SET" => array( "ALTER TABLE `{$conf['db']['prefix']}users_event_log` ADD `zam` text NOT NULL", ), ), "Unknown column 'text' in 'field list'" => array( "SELECT * FROM {$conf['db']['prefix']}users_event" => array( "ALTER TABLE `{$conf['db']['prefix']}users_event` ADD `text` text NOT NULL ", ), ), "Unknown column 'own' in 'field list'" => array( "INSERT INTO {$conf['db']['prefix']}users_event_log SET" => array( "ALTER TABLE `{$conf['db']['prefix']}users_event_log` ADD `own` varchar(255) NOT NULL", ), ), "Unknown column 'pages' in 'field list'" => array( "UPDATE {$conf['db']['prefix']}search SET" => array( "ALTER TABLE `{$conf['db']['prefix']}search` ADD `pages` int(11) NOT NULL AFTER `count`", ), ), "Unknown column 'flush' in 'field list'"=>array( "UPDATE {$conf['db']['prefix']}users SET pass="=>array( "ALTER TABLE `{$conf['db']['prefix']}users` ADD `flush` int(11) NOT NULL AFTER `refer`", "ALTER TABLE `{$conf['db']['prefix']}users` ADD INDEX (flush)", ), ), "Unknown column 'r.mid' in 'where clause'" => array( "SELECT b.* FROM {$conf['db']['prefix']}blocks_reg AS r INNER JOIN {$conf['db']['prefix']}blocks AS b ON r.id=b.rid WHERE"=> array( "ALTER TABLE `{$conf['db']['prefix']}blocks_reg` ADD `mid` int(11) NOT NULL AFTER `id`", "ALTER TABLE `{$conf['db']['prefix']}blocks_reg` ADD INDEX (mid)", ), ), "Unknown column 'time' in 'field list'" => array( "INSERT INTO {$conf['db']['prefix']}foto_img SET"=>array( "ALTER TABLE `{$conf['db']['prefix']}foto_img` ADD `time` int(11) NOT NULL AFTER `id`", "ALTER TABLE `{$conf['db']['prefix']}foto_img` ADD INDEX (time)", ), ), "Unknown column 'ref' in 'field list'" => array( "INSERT INTO {$conf['db']['prefix']}users SET"=>array( "ALTER TABLE `{$conf['db']['prefix']}users` ADD `ref` varchar(255) NOT NULL AFTER `img`", "ALTER TABLE `{$conf['db']['prefix']}users` ADD INDEX (ref)", ), ), "Unknown column 'url_id' in 'field list'" => array( "INSERT INTO {$conf['db']['prefix']}comments_txt SET url_id=" => array( "ALTER TABLE `{$conf['db']['prefix']}comments_txt` CHANGE `uid` `url_id` int(11) NOT NULL", "ALTER TABLE `{$conf['db']['prefix']}comments_txt` ADD INDEX (url_id)", ), ), "Unknown column 'txt.url_id' in 'where clause'" => array( "SELECT txt.* FROM {$conf['db']['prefix']}comments_txt AS" => array( "ALTER TABLE `{$conf['db']['prefix']}comments_txt` CHANGE `uid` `url_id` int(11) NOT NULL", "ALTER TABLE `{$conf['db']['prefix']}comments_txt` ADD INDEX (url_id)", ), ), "Unknown column 'url.name' in 'where clause'" => array( "SELECT txt.* FROM {$conf['db']['prefix']}comments_txt" => array( "ALTER TABLE `{$conf['db']['prefix']}comments_url` CHANGE `url` `name` text NOT NULL", // "ALTER TABLE `{$conf['db']['prefix']}comments_txt` ADD INDEX (url_id)", ), ), "Unknown column 'count' in 'field list'" => array( "INSERT INTO {$conf['db']['prefix']}search" => array( "ALTER TABLE `{$conf['db']['prefix']}search` ADD `count` int(11) NOT NULL AFTER `search`", "ALTER TABLE `{$conf['db']['prefix']}search` ADD INDEX (uid)", ), "UPDATE {$conf['db']['prefix']}search SET" => array( "ALTER TABLE `{$conf['db']['prefix']}search` ADD `count` int(11) NOT NULL AFTER `search`", "ALTER TABLE `{$conf['db']['prefix']}search` ADD INDEX (uid)", ), ), "Unknown column 'uid' in 'field list'" => array( "INSERT INTO {$conf['db']['prefix']}users_event SET" => array( "ALTER TABLE `{$conf['db']['prefix']}users_event` ADD `uid` int(11) NOT NULL AFTER `time`", ), "INSERT INTO {$conf['db']['prefix']}comments_txt SET" => array( "ALTER TABLE `{$conf['db']['prefix']}comments_txt` ADD `uid` int(11) NOT NULL AFTER `url_id`", "ALTER TABLE `{$conf['db']['prefix']}comments_txt` ADD INDEX (uid)", ), ), "Unknown column 'modpath' in 'field list'" => array( "INSERT INTO {$conf['db']['prefix']}comments_url SET" => array( "ALTER TABLE `{$conf['db']['prefix']}comments_url` ADD `modpath` varchar(255) NOT NULL AFTER `name`", "ALTER TABLE `{$conf['db']['prefix']}comments_url` ADD INDEX (modpath)", ), ), "Unknown column 'fn' in 'field list'" => array( "INSERT INTO {$conf['db']['prefix']}comments_url SET" => array( "ALTER TABLE `{$conf['db']['prefix']}comments_url` ADD `fn` varchar(255) NOT NULL AFTER `modpath`", "ALTER TABLE `{$conf['db']['prefix']}comments_url` ADD INDEX (fn)", ), ), "Table '{$conf['db']['name']}.{$conf['db']['prefix']}pages_index' doesn't exist" => array( "SELECT * FROM {$conf['db']['prefix']}pages_index" => array( "ALTER TABLE {$conf['db']['prefix']}pages_post RENAME {$conf['db']['prefix']}pages_index", ), ), "Table '{$conf['db']['name']}.{$conf['db']['prefix']}users_event' doesn't exist" => array( "INSERT INTO {$conf['db']['prefix']}users_event SET" => array( "CREATE TABLE `{$conf['db']['prefix']}users_event` ( `id` int(11) NOT NULL AUTO_INCREMENT, `time` int(11) NOT NULL, `name` varchar(255) NOT NULL, `count` int(11) NOT NULL, `log` smallint(6) NOT NULL, `description` varchar(255) NOT NULL, PRIMARY KEY (`id`), UNIQUE KEY `name_2` (`name`), KEY `name` (`name`) ) ENGINE=InnoDB DEFAULT CHARSET=cp1251", "CREATE TABLE `{$conf['db']['prefix']}users_event_log` ( `id` int(11) NOT NULL AUTO_INCREMENT, `time` int(11) NOT NULL, `event_id` int(11) NOT NULL, `uid` int(11) NOT NULL, `description` text NOT NULL, PRIMARY KEY (`id`), KEY `event_id` (`event_id`), KEY `uid` (`uid`) ) ENGINE=InnoDB DEFAULT CHARSET=cp1251", ), ), /* "Unknown column 'time' in 'order clause'" => array( "SELECT * FROM {$conf['db']['prefix']}search" => array( "ALTER TABLE `{$conf['db']['prefix']}search` ADD `time` int(11) NOT NULL AFTER `uid`", "ALTER TABLE `{$conf['db']['prefix']}search` ADD INDEX (time)", "ALTER TABLE `{$conf['db']['prefix']}search` DROP `date`ALTER TABLE `{$conf['db']['prefix']}search` DROP `date`", ), ),*/ /* "Table '{$conf['db']['name']}.{$conf['db']['prefix']}search_index' doesn't exist" => array( "SELECT * FROM {$conf['db']['prefix']}search_index" => array( "ALTER TABLE {$conf['db']['prefix']}search RENAME {$conf['db']['prefix']}search_index", ), ),*/ ); if($error){ mpevent("Ошибка в структуре базы данных", $error, !empty($conf['user']['uid']) ? $conf['user']['uid'] : 0); if($init = $check[ $error ]){ mpevent("Таблица исправлений структуры базы даных", $sql, $conf['user']['uid'], $init); foreach($init as $r=>$q){ if(strpos($sql, $r) !== false){ mpevent("Исправление структуры базы данных", $sql, $conf['user']['uid'], $init[ $q ]); foreach($q as $n=>$s){ mpqw($s); echo $s; } mpre($q); } }; } } } if (!empty($conf['settings']['analizsql_log'])){ $conf['db']['sql'][] = $q = array( 'info' => $info ? $info : $conf['db']['info'], 'time' => microtime(true)-$mt, 'sql' => $sql, ); if(!empty($conf['settings']['sqlanaliz_time_log']) && $q['time'] > $conf['settings']['sqlanaliz_time_log']){ mpevent("Долгий запрос к базе данных", $sql. " {$q['time']}c.", $conf['user']['uid'], $q); } } return($result); } в общем глядя на качество кода понятно что дальнейший спор просто бесполезен... человек уставший от свалки кода в файлах и файлов в каталогах ясен хрен запихнет всё в архив. а потом еще можно несколько сайтов образами в виртуальные машины упаковывать. ну когда помойка и среди архивов достанет...
При чем здесь архивация тем более раром? Вы вообще понимаете о чем здесь разговаривают? Похоже я не смог донести того о чем хотел рассказать. Возможно удивлю. Но в phar не применяется сжатие. Аналог с упаковкой со сжатием здесь совсем не уместен, так как делается это совершенно для других целей. Вы знаете разницу между tar и gz в юникс подобных системах? Если знаете, то phar аналог tar оптимизированный для работы со скриптами. Попробуйте открыть phar архив любым текстовым редактором. Все данные лежат там без сжатия. Никакой нагрузки на распаковку от процессора не требуется.
Как раз меняет. Когда ты начал разговор о зтраченных ресурсах я даже не понял к чему это. Сейчас, когда видно что для тебя это одно и тоже понятно в чем непонимание происходящего. Попробуй открыть текстовым редактором zip и phar архив. Думаю будешь удивлен тем, что увидишь. Ну и соответсвенно выводы: Ресурсы при работе с phar не могут тратится по определению так как работа идет с одним файлом а не с тысячью разбросанных по файловой системе и собственными правами доступа которые нужно тоже обработать. Здесь все файлы уже загружены в оперативу и остается их только исполнять. Я подозреваю что при определенных условиях производительность даже повышается, но без тестов это однозначно сложно утверждать.
Т.е. ты уверен, что это бесплатное преобразование? Отдачу статики через пхп пока пропустим мимо ушей.
Если бы речь шла о сжатии, то я был бы на вашей стороне. В данном случае считаю что подобная организация даже прибавит в скорости работы . Но опять же это не более чем мнение. Текстов скорости пока еще не встречал. По phar тестов возможно еще нет, можно попробовать поискать тесты производительности jar архивов для java. В данном случае имеем аналогичную ситуацию. Для меня это все равно что разрезать один огромный скрипт на сто пятьсот маленьких. После разрезания и раскладывания их по разным файлам скорость исполнения всего скрипта увеличится или уменьшится? Встречал подход оптимизации склейки всего и вся. Разрезание и раскладывание по разным файлам такого еще не встречал, так как прибавляется дополнительные затраты на обращение к отдельно лежащим файлам и склейкой их вместе. Остальное идентично первому варианту.
Мы сейчас говорим об разных уровнях исполнения. Подозреваю что в обеих случаях можно применить Акселератор. На каком то уровне кеширование применяется без этого никак. Но это кеширование на уровне файловой системы или работы с архивами. А вообще считаю кеш злом. При большой увлеченности кешированием появляются ошибки в выводе страницы. Малозаметные глюки которые усложняют разработку и усложняют поимку багов. Зачем? Если времени исполнения всего сайта примерно в 0.1 с. более чем достаточно чтобы вообще ничем не пользоваться. Подобные вещи актуальны на тяжеловесных системах с тысячью файлов и сотнями классов и библиотек. Или при заоблачных нагрузках которые пока не актуальны. Подобные вещи для решиения проблем производительности. Пока их не наблюдаю. Посути меняется только хранение файлов. Раскидывать их по всей файловой системе или хранить в одном архиве чисто организационная фишка. Вы храните все функции в одном файле или пишите их каждый раз в разных? На процесс кеширования это никак не сказывается. Думаю php вообще все равно откуда скрипты брать с архива или из файловой системы. Это выбор разработчика
ну у кого руки из жопы растут у того конечно будут баги на кэше. адекватные программисты знают свое приложение. ну так сами. сами. просим же. пока это только нытьё "я всё хочу в одному файлике ну пожалуйста мама накажи этих плохих мальчиков". да ну действительно распаковать из архива с диска или сразу считать с диска. кажется тут лишнее действие. ах да. распаковка архива. я плюсы-минусы увижу? бенчмарк опять же не помешает. мне ж интересна тема а с таким собеседником кажется что phar - говно лютое. потому что он развил систему в 1576 файлов и ноет что ему сложно за этими 1576 файлами ухаживать. и какая-то сраная упаковка в архив - блин сразу решает все его проблемы. еще можно компьютер выключить. тогда вообще похеру упакованы эти 1576 файлов или нет.
Если сам написал приложение, то разобраться в нем нет проблем. Но если это ты. Как только в этом начинает разбираться другой, то все снова плохо. К кешированию я стал относится плохо как только столкнулся с его реализацией в битриксе. Подход один раз пересчитать и сохранить выдавая каждый раз одно и то-же очень плохой подход. Не знаешь то, что выдал тебе сайт это действительно рабочие или сохраненные давно и уже не актуальные. В процессе разработки требуется постоянно перезагружать данные обновляя их. А если пару блоков связаны между собой, то это становится просто трагедией. Разработчик чаще щелкает по настройкам после каждого обновления очищая сохраненные данные чем занимается своей работой. Неужели только я с этим сталкивался? Вспоминаю это как страшный сон. Мастурбация а не разработка. Кеширование это не панацея а такое же усложнение как и другие инструменты. Лучше без него чем с ним. Если система не может работать без кеширование то это хреновая система и нужно что то менять.
я безумно сожалею что вам пришлось подтирать за говонокодерами. но как бы нормальная документация кода и нормальная архитектура кода это одно. версирование процесса разработки это другое. деплой это третье. и мы сейчас говорим именно про последнее. про решение доставлять всё приложение одним архивом. какая разница какие прямые руки были у программиста? какая разница кто страдал днями и ночами пытаясь понять что значит эмпре(арби())? какая разница как используется кэширование? какая разница на какой платформе это будет исполняться? вы мне поясните почему вы в любую другую стороны пытаетесь уйти от разговора о деплое сотней файлов против деплоя одним архивом? может еще обсудим напиток который надо по утрам пить? я вот кофе люблю. как это к деплою относится? да хрен его знает, но после чая не работает, инфа 100%. вы назначения кэширования не понимаете? ваши же слова в начале темы что при правильной настройтке сервера архив будет читаться из озу и его не придется постоянно распаковывать. ну так это и есть кэширование. которое не панацея, усложнение и безкоторого лучше и вообще согласитесь раз ваше решение упаковывать одним архивом требует кэширования в озу то это хреновая система и нужно что-то менять. всё вашими же словами (ну кроме того что я правильно пишу "что-то")
В вашем случае "Не нужно ничего не менять." Оставьте все как есть. У вас идеальный вариант. Плюс к кешированию сервера доверните еще пару кеширований от себя. И будет вам счастье. Советую почитать статью "Темное программирование" http://habrahabr.ru/post/192320/ Только джедай может утверждать про блага кеширования (особенно искусственного). Я утверждаю, что "Любой код – это привнесение во Вселенную хаоса." Если в моем случае и есть кеширование то оно во первых не возможно в случае обычных файлов, так как они могут измениться в любой момент, во вторых не требуют дополнительно прикрученных библиотек и искаждения нормальной линии разработки сохраненными промежуточных результатов.
вот люди пошли... чем рассмотреть глубже предложенную ими же технологию они уводят тему в сторону и завершают разговор "на-отйэбисъ"... очень жаль.
Я ее отлично рассмотрел. Более того постоянно использую. В отличае от вас который уже три страницы текста "попиздесть" А давайте все "закешируем", у хорошего разработчика и так все хорошо и мне и так хорошо живется зачем что-то менять.
не вижу плюсов-минусов, подводных камней, бенчмарка а может быть это ваша проблема? вы пользуетесь сами не ведая что делаете? страниц не три а две, пагинатор вверху и внизу страницы есть если не обратили внимание. я вроде попросил абстрагироваться от рукожопых разработчиков, страшных систем версирования, угнетающего кэша и конкретно сравнить архив и не архив. вы не умеете общаться...
То, что использую стало результатом лет 15 работы программистом. Мне решение показалось достаточно удобным. Как может это быть моей проблемой? Вы о чем? В отличае от вас я пробовал оба варианта и то что описал было осознанным выборов связанным с определенными неудобствами стандартной разработки. Это реакция на неадекватов. Могу вполне нормально обсудить реальные проблемы, а не выкрики человека слабо разбирающегося в том, что говорит. Я же объяснил если у вас и так все хорошо ничего не меняйте. Нет проблем с использования тысячи файлов в файловой системе закиньте туда еще пару тысяч и рядом резервные копии делайте чтобы еще увеличить их количество на порядок. Засрите все файлами проблем же нет.
ну так может быть вы озвучите уже наконец что именно удобно? раз у вас уже 15 лет опыта то вы просто обязаны уметь общаться как опытный человек. простите, а что в нашем диалоге вас заставляет утверждать что я неадекватен? то что вы нихера не отвечаете на вопросы? то что вы стремитесь людей оскорбить? что ваше описание плюсов и минусов обсуждаемой технологии заканчивается нытьем про говнокодеров, версирование, кэш, кучу файлов в файловой системе. это очень аргументированный спор. конечно же в этом виновата моя адекватность. прям даже не знаю как меня матушка Земля терпит...