2015-08-07 6 views
2

Я установил cron на сервере, который выполняет каждые 3 минуты некоторые функции.Каков наилучший способ начать транзакции?

этого являются функции:

$xmldb->sendOddsToDb(); 
$xmldb->copyHAtoHandicap(); 
$xmldb->sendFixturesToDb(); 
$xmldb->fillBaby(); 

Каждая функция имеет:

try{ 
$this->conn->connect(); //connect to database 
$this->PDO->beginTransaction(); // begin 
$stmt = $this->PDO->prepare($this->insTLS); 
//some params not important 
$this->PDO->commit(); //SAVE 
$this->conn->close(); //CLOSE 
} 
catch(Exception $e){ 
$this->PDO->rollBack(); 
} 

Теперь мой вопрос, лучше использовать транзакции, как это, для каждой функции новой транзакции или лучше начинать только один раз , и фиксировать на конце всех функций? Например:

try{ 
    $this->conn->connect(); //connect to database 
    $this->PDO->beginTransaction(); // begin 
    $xmldb->sendOddsToDb(); 
    $xmldb->copyHAtoHandicap(); 
    $xmldb->sendFixturesToDb(); 
    $xmldb->fillBaby(); 
    $this->PDO->commit(); //SAVE 
    $this->conn->close(); //CLOSE 
} 
catch(Exception $e){ 
    $this->PDO->rollBack(); 
} 

мне нужно вставить как можно быстро данные DB, потому что я получить данные из корма, где более 100 000 строк каждые 3 минуты.

+0

Вы можете ответить на свой вопрос намного лучше, чем кто-либо другой, если вы знаете, что такое транзакция. Итак - знаете ли вы, что такое транзакция и что она делает? – Mjh

ответ

2

Я предлагаю прочитать это PHP PDO Transactions Documentation.

Прежде всего, нет никакой разницы, если вы явно начинаете транзакцию, выполняете PDOStatement и совершаете транзакцию или просто выполняете транзакцию.

Во-вторых, если четыре функции базы данных зависят друг от друга, заверните их все в транзакцию.

В-третьих, независимо от того, связаны ли функции, их упаковка в одной транзакции определенно будет быстрее.

+0

Хорошо, я завершу его в одну транзакцию. Спасибо за совет. – DocNet

Смежные вопросы