Закрытие соединения MySQL во время параллельных задач Cron

Я написал службу cron на основе Zend Framework для параллельных задач на основе этих двух статей в блоге:

Таким образом, сервисы cron используют pcntl_fork() порождать задачи параллельно.

Запуск одной задачи со службой работает без проблем, но когда я добавляю вторую задачу, я получаю эту ошибку MySQL:

Общая ошибка: 2006 сервер MySQL ушел

Мое лучшее предположение состоит в том, что дочерний поток заканчивается раньше другого, и соединение MySQL неявно закрывается. Если это так, как я могу убедиться, что соединение остается открытым до тех пор, пока родительский поток не закроется?

1 ответ

Решение

После прочтения комментариев pcntl_fork() и этот ТАК вопрос, это была действительно проблема с детьми, разделяющими родительскую связь. Я добавил этот код, чтобы создать новое соединение MySQL после разветвления, и, похоже, это решило проблему:

// give this thread its own db connection
$settings = Zend_Registry::get('settings');
$db = Zend_Db::factory(
    $settings->db_adapter,
    array(
        'host' => $settings->db_host,
        'username' => $settings->db_user,
        'password' => $settings->db_pass,
        'dbname' => $settings->db_name,
    )
);
$db->setFetchMode(Zend_Db::FETCH_OBJ);
Zend_Db_Table::setDefaultAdapter($db);
Другие вопросы по тегам