예제 #1
0
 if (check_deamon_restart($db)) {
     exit;
 }
 testblock_lock();
 $data = $db->query(__FILE__, __LINE__, __FUNCTION__, __CLASS__, __METHOD__, "\n\t\t\tSELECT *\n\t\t\tFROM `" . DB_PREFIX . "queue_testblock`\n\t\t\tORDER BY `head_hash` ASC\n\t\t\tLIMIT 1\n\t\t\t", 'fetch_array');
 if (!$data) {
     testblock_unlock();
     sleep(1);
     continue;
 }
 debug_print($data, __FILE__, __LINE__, __FUNCTION__, __CLASS__, __METHOD__);
 $new_block = $data['data'];
 debug_print('strlen $new_block=' . strlen($new_block), __FILE__, __LINE__, __FUNCTION__, __CLASS__, __METHOD__);
 debug_print('hex $new_block=' . bin2hex($new_block), __FILE__, __LINE__, __FUNCTION__, __CLASS__, __METHOD__);
 list(, $new_header_hash) = unpack("H*", $data['head_hash']);
 $tx = ParseData::delete_header($new_block);
 debug_print('strlen $tx=' . strlen($tx), __FILE__, __LINE__, __FUNCTION__, __CLASS__, __METHOD__);
 debug_print('hex $tx=' . bin2hex($tx), __FILE__, __LINE__, __FUNCTION__, __CLASS__, __METHOD__);
 // сразу можно удалять данные из таблы-очереди
 $db->query(__FILE__, __LINE__, __FUNCTION__, __CLASS__, __METHOD__, "\n\t\t\tDELETE FROM `" . DB_PREFIX . "queue_testblock`\n\t\t\tWHERE `head_hash` = 0x{$new_header_hash}\n\t\t\t");
 ////debug_print($db->printsql(), __FILE__, __LINE__,  __FUNCTION__,  __CLASS__, __METHOD__);
 // прежде всего нужно проверить, а нет ли в этом блоке ошибок с несовметимыми тр-ми
 // при полной проверке, а не только фронтальной проблем с несовместимыми тр-ми не будет, т.к. там даные сразу пишутся в таблицы
 // а тут у нас данные пишутся только в log_time_
 // и сами тр-ии пишем в отдельную таблу
 if ($tx) {
     do {
         debug_print('$tx=' . $tx, __FILE__, __LINE__, __FUNCTION__, __CLASS__, __METHOD__);
         debug_print('$tx hex=' . bin2hex($tx), __FILE__, __LINE__, __FUNCTION__, __CLASS__, __METHOD__);
         $tx_size = ParseData::decode_length($tx);
         // отчекрыжим одну транзакцию от списка транзакций