public function update() { $inTransaction = Database::inTransaction(); if (!$inTransaction) { Database::beginTransaction(); } $statement = Database::prepare("UPDATE user_power SET `uid`=:uid WHERE id=:id"); $statement->bindValue(':uid', $this->uid, \PDO::PARAM_INT); $statement->bindValue(':id', $this->id, \PDO::PARAM_INT); $statement->execute(); $this->uid = Database::lastInsertId(); $statement->execute(); if (!$inTransaction) { Database::commit(); } }
function execute() { if (!Database::beginTransaction()) { trigger_error('Cannot initiate transaction.', E_USER_WARNING); return false; // Must halt explicitly because of data integrity. } $hasFailure = false; $failHandler = function () use(&$hasFailure) { $hasFailure = true; }; foreach ($this->callbacks as $callback) { $callback()->fail($failHandler); if ($hasFailure) { break; } } if ($hasFailure) { Database::rollback(); } else { Database::commit(); } return !$hasFailure; }
/** * update User info * */ public function updateUser() { $inTransaction = Database::inTransaction(); if (!$inTransaction) { Database::beginTransaction(); } $statement = Database::prepare("UPDATE member SET email=:email, `password`=:pwd, sspwd=:sspwd, `port`=:port, nickname=:nickname,\n `flow_up`=:flow_up, `flow_down`=:flow_down, transfer=:transfer, plan=:plan, `enable`=:enable, invite=:invite, regDateLine=:regDateLine WHERE uid=:userId"); $statement->bindValue(':email', $this->email, \PDO::PARAM_STR); $statement->bindValue(':pwd', $this->password, \PDO::PARAM_STR); $statement->bindValue(':sspwd', $this->sspwd, \PDO::PARAM_STR); $statement->bindValue(':port', $this->port, \PDO::PARAM_INT); $statement->bindValue(':nickname', $this->nickname, \PDO::PARAM_STR); $statement->bindValue(':flow_up', $this->flow_up, \PDO::PARAM_INT); $statement->bindValue(':flow_down', $this->flow_down, \PDO::PARAM_INT); $statement->bindValue(':transfer', $this->transfer, \PDO::PARAM_INT); $statement->bindValue(':plan', $this->plan, \PDO::PARAM_STR); $statement->bindValue(':enable', $this->enable, \PDO::PARAM_INT); $statement->bindValue(':invite', $this->invite, \PDO::PARAM_INT); $statement->bindValue(':regDateLine', $this->regDateLine, \PDO::PARAM_INT); $statement->bindValue(':userId', $this->uid, \PDO::PARAM_INT); $statement->execute(); if (!$inTransaction) { Database::commit(); } }
public function updateInvite() { $inTransaction = Database::inTransaction(); if (!$inTransaction) { Database::beginTransaction(); } $statement = Database::prepare("UPDATE invite SET expiration=:expiration,\n\t\t\t`reguid`=:reguid, `regDateLine`=:regDateLine, `status`=:status, `inviteIp`=:inviteIp WHERE invite=:invite"); $statement->bindValue(':expiration', $this->expiration, \PDO::PARAM_INT); $statement->bindValue(':reguid', $this->reguid, \PDO::PARAM_INT); $statement->bindValue(':regDateLine', $this->regDateLine, \PDO::PARAM_INT); $statement->bindValue(':status', $this->status, \PDO::PARAM_INT); $statement->bindValue(':inviteIp', $this->inviteIp, \PDO::PARAM_STR); $statement->bindValue(':invite', $this->invite, \PDO::PARAM_STR); $statement->execute(); if (!$inTransaction) { Database::commit(); } }
/** * Save new password * @param string $password New password */ public function savePassword($password) { $salt = substr(md5($this->id . $this->email . ENCRYPT_KEY), 8, 16); $this->password = substr(md5(md5($password) . $salt), 0, 30) . 'T' . self::ENCRYPT_TYPE_ENHANCE; $inTransaction = Database::inTransaction(); if (!$inTransaction) { Database::beginTransaction(); } $statement = Database::prepare("UPDATE member SET `password`=:pwd WHERE id=:userId"); $statement->bindValue(':pwd', $this->password, \PDO::PARAM_STR); $statement->bindValue(':userId', $this->id, \PDO::PARAM_INT); $statement->execute(); if (!$inTransaction) { Database::commit(); } }
// child: $forked == true $forked = $pid == 0; // unset($pid); // parent will die here if (!$forked) { exit(1); } // Avoid forking connection crash, renew the connection. Database::disconnect(); // Get maximum allowed connections before table lock. $capLimit = (int) @conf::get('system::crontab.process_limit'); if (!$capLimit) { $capLimit = Process::MAXIMUM_CAPACITY; } // Start transaction before lock tables. Database::beginTransaction(); // Pick next awaiting process Database::locKTables([FRAMEWORK_COLLECTION_PROCESS . ' READ']); $res = (int) Database::fetchField('SELECT IFNULL(SUM(`capacity`), 0) as occupation FROM `' . FRAMEWORK_COLLECTION_PROCESS . '` WHERE `pid` IS NOT NULL AND `pid` > 0'); Database::unlockTables(true); if ($res >= $capLimit) { Log::debug('Active processes has occupied maximum server capacity, daemon exits.'); Database::rollback(); die; } unset($res, $capLimit); Database::lockTables(array(FRAMEWORK_COLLECTION_PROCESS . ' LOW_PRIORITY WRITE', FRAMEWORK_COLLECTION_PROCESS . ' as `active` LOW_PRIORITY WRITE', FRAMEWORK_COLLECTION_PROCESS . ' as `inactive` LOW_PRIORITY WRITE')); $process = Database::fetchRow('SELECT `inactive`.* FROM `' . FRAMEWORK_COLLECTION_PROCESS . '` as `inactive` LEFT JOIN ( SELECT `type`, SUM(`capacity`) as `occupation` FROM `' . FRAMEWORK_COLLECTION_PROCESS . '`
/** * 删除 node * @param $nodeId Int */ public static function deleteNode($nodeId) { $inTransaction = Database::inTransaction(); if (!$inTransaction) { Database::beginTransaction(); } $statement = Database::prepare("DELETE * FROM node WHERE id=:id"); $statement->bindValue(':id', $nodeId, \PDO::PARAM_INT); $statement->execute(); if (!$inTransaction) { Database::commit(); } }
/** * Update message */ public function update() { $inTransaction = Database::inTransaction(); if (!$inTransaction) { Database::beginTransaction(); } $statement = Database::prepare("UPDATE message SET `content`=:content, `pushTime`=:pushTime,\n\t\t\t`addTime`=:addTime, `pushUsers`=:pushUsers, `type`=:type, `pushEndTime`:=pushEndTime,\n\t\t\t `order`=:order WHERE id=:id"); $statement->bindValue(':content', $this->name, \PDO::PARAM_STR); $statement->bindValue(':pushTime', $this->type, \PDO::PARAM_INT); $statement->bindValue(':addTime', $this->server, \PDO::PARAM_INT); $statement->bindValue(':pushUsers', $this->method, \PDO::PARAM_STR); $statement->bindValue(':type', $this->info, \PDO::PARAM_INT); $statement->bindValue(':pushEndTime', $this->status, \PDO::PARAM_INT); $statement->bindValue(':order', $this->order, \PDO::PARAM_INT); $statement->bindValue(':id', $this->order, \PDO::PARAM_INT); $statement->execute(); if (!$inTransaction) { Database::commit(); } }