All streams
Search
Write a publication
Pull to refresh
13
0
Нилов Андрей @Nilov_A

Пользователь

Send message
«А почему вы почту не отправляете Zend_Mail » — потому, что данные записанные в БД уже подготовлены Zend_Mail и обрабатывать их повторно абсолютно бессмысленно.

«На чём именно вы пытались сэкономить в этом случае?» — не вижу смысла подключать фреймворк, если требуется сделать цикл по базе и вызвать функцию mail(). Данный файл вызывается с периодичностью раз в минуту, поэтому, чем меньше он будет потреблять ресурсов за раз, тем лучше.
Вы правы, это просто пример. К тому же данное решение не обязательно должно работать на зенде. Zend_Mail можно «прикрутить» к любому фреймворку или самопису. У меня, например, подобное решение работает на Yii и на самописном фреймворке.
Да, я конечно, не против использовования CMap::mergeArray(), но вот почему я не делаю этого в конфиге:
я тоже разделяю конфига на один базовый и конкретные (prodaction, dev, test и т.д.) и затем мержу их. Плюс в конфигах я так же определяю константы, таки как:

define('YII_DEBUG', true);
define('YII_TRACE_LEVEL', 3);
define('YII_ENABLE_ERROR_HANDLER', true);
define('YII_ENABLE_EXCEPTION_HANDLER', true); 


Но так как в yii.php уже определены эти константы и подключение его раньше моего конфига вызовет конфликт, а CMap::mergeArray() использовать без yii.php не получиться (можно конечно по отдельности подключить файлы «CMap.php», «CComponent.php», но по моему это не вариант) — я использую array_replace_recursive().

P.S. Почему я не определяю константы в index.php? — потому, что их значения тоже зависят от окружения (prodaction, dev, test).
Спасибо, я знаю. Я имел ввиду, то что CMap::mergeArray() делает то же, что и array_replace_recursive(), по крайней мере CMap::mergeArray() является реплейсем а не мержем.

Выполните код:
$mainConfig = array(
    'components' => array(
        'db' => array(
            'connectionString' => 'mysql:host=prodaction_host;dbname=prodaction_dbname',
            'emulatePrepare'   => true,
            'username'         => 'prodaction_username',
            'password'         => 'prodaction_password',
            'charset'          => 'utf8'
        ),
    ),
);

$devConfig = array(
    'components' => array(
        'db' => array(
            'connectionString' => 'mysql:host=dev_host;dbname=dev_dbname',
            'username'         => 'dev_username',
            'password'         => 'dev_password'
        ),
    ),
);

var_dump(array_replace_recursive($mainConfig, $devConfig));
var_dump(CMap::mergeArray($mainConfig, $devConfig));
var_dump(array_replace_recursive($mainConfig, $devConfig) === CMap::mergeArray($mainConfig, $devConfig));
Зачем здесь вообще CMap::mergeArray()? Есть же array_replace_recursive().
Да, Вы правы, так будет короче. Поправил.
Re: «1. Почему старая версия» — потому, что первая версия уже была заточена под один фреймворк, были вынесены все переменные конфига, все протестировано. Будет время, сделаю для второй версии.

Re: «2. Чем 'testLimit' => 1, для постоянной смены капчи не устроил?» —
Он не влияет на простой refresh, а только на ошибочный ввод каптчи.
Хорошо, как настраивается и/или доделывается?
Каптча обязательное условие ТЗ и она глючила (см. первый пункт).
Идея хорошая, но зачем такие сложности? можно реализовать всё гораздо проще, без расширений.

В корне создаём файлик ".author" и в нем пишем ник автора.

В index.php добавляем:
$webRoot = dirname(__FILE__);
$author = null;
$authorFile = $webRoot . '/.author';
if (is_file($authorFile)) {
    $author = trim(file_get_contents($authorFile));
}


ну и дальше как в вашем примере:
if (!empty($author)) {
    $config = $webRoot . '/protected/config/' . $author . '.php';
    if (!file_exists($config)) {
        $config = $webRoot . '/protected/config/main.php';
    }
    defined('YII_DEBUG') or define('YII_DEBUG',true);
    defined('YII_TRACE_LEVEL') or define('YII_TRACE_LEVEL',3);

} else {
    $config = $webRoot . '/protected/config/production.php';
}


Авторские конфиги и «prodaction» мержим с «main», как описано в «рецептах»:
<?php
return CMap::mergeArray(
    require(dirname(__FILE__) . '/main.php'),
    array(
        'components'=>array(
            'db' => array(
            ...
            ),
        ),
    )
); 
2

Information

Rating
Does not participate
Location
Россия
Date of birth
Registered
Activity