====== Несколько PC на одну учетку ====== Аккаунтов будет много, но баланс и доступ в инет будет единый Решение данной задачи происходит путём добавления в cron на исполнение скрипта. Скрипт делает синхронизацию балансов. Логика работы: User User-1 User-2 User-3 У аккаунтов User-1,User-2,User-3 баланс будет такой же как у User после запуска скрипта. Запускать скрипт по cron самостоятельно.\\ Пример записи для cron: \\ 0 * * * * /usr/bin/php /var/mikbill/custom_scripts/balance/balanse.php Скрипт будет запуститься каждый час.\\ Ещё примеры, как это работает: \\ Баланс будет синхронизироваться для пользователей, чьи логины будут в таком виде: userlogin, userlogin-1, userlogin-2. При выполнении скрипта пользователям userlogin-1 и userlogin-2 будет выставляться такой же баланс, как и у userlogin. Обновленный balanse.php:\\ parameters->timezone; $CONF_MYSQL_HOST = (string) $xml->parameters->mysql->host; $CONF_MYSQL_USERNAME = (string) $xml->parameters->mysql->username; $CONF_MYSQL_PASSWORD = (string) $xml->parameters->mysql->password; $CONF_MYSQL_DBNAME = (string) $xml->parameters->mysql->dbname; } else { die("config not found"); } if(isset($TIME_ZONE)) date_default_timezone_set($TIME_ZONE); else date_default_timezone_set('Europe/Kiev'); $db = new PDO( "mysql:host={$CONF_MYSQL_HOST};dbname={$CONF_MYSQL_DBNAME}", $CONF_MYSQL_USERNAME, $CONF_MYSQL_PASSWORD, array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES koi8r") ); $users_list=array(); $QUERY_GET_USERS="SELECT uid, user FROM users WHERE user REGEXP '-[0-9]+$'"; $sql = $db->prepare($QUERY_GET_USERS); $sql->execute(); $res = $sql->fetchAll(PDO::FETCH_ASSOC); if ($sql->rowCount() > 0) { foreach ($res as $value) { $name = null; $name_tmp=explode("-", $value["user"]); $len = count($name_tmp); if( $len == 2 ) { if( is_numeric($name_tmp[1]) ) { $name = $name_tmp[0]; } } elseif( $len > 2 ) { foreach( $name_tmp as $t ) { if ($t === end($name_tmp)) { break; } if( $t === reset($name_tmp) ) { $name .= $t; } else { $name .= "-" . $t; } } } else { # len = 1 ? } $QUERY_GET_USER="SELECT uid, deposit, credit, blocked FROM users WHERE user = :user"; $sql = $db->prepare($QUERY_GET_USER); $sql->execute(['user' => $name]); $req = $sql->fetchAll(PDO::FETCH_ASSOC); if ($sql->rowCount() > 0) { foreach ($req as $eq) { $users_list[$name]["uid"] = $eq["uid"]; $users_list[$name]["deposit"] = $eq["deposit"]; $users_list[$name]["credit"] = $eq["credit"]; $users_list[$name]["blocked"] = $eq["blocked"]; } } } foreach ($users_list as $user=>$value) { if(isset($value["uid"])) { if( $sync_type == 1 ) { # blocked $QUERY_UPDATE = "UPDATE users SET blocked=:blocked WHERE user REGEXP :user"; $stmt = $db->prepare($QUERY_UPDATE); $stmt->execute(['blocked' => $value["blocked"], 'user' => "{$user}-[0-9]+$"]); } elseif( $sync_type == 2 ) { # deposit $QUERY_UPDATE = "UPDATE users SET deposit=:deposit WHERE user REGEXP :user"; $stmt = $db->prepare($QUERY_UPDATE); $stmt->execute(['deposit' => $value["deposit"], 'user' => "{$user}-[0-9]+$"]); } elseif( $sync_type == 3 ) { # deposit + credit $QUERY_UPDATE = "UPDATE users SET credit=:credit, deposit=:deposit WHERE user REGEXP :user"; $stmt = $db->prepare($QUERY_UPDATE); $stmt->execute(['credit' => $value["credit"], 'deposit' => $value["deposit"], 'user' => "{$user}-[0-9]+$"]); } elseif( $sync_type == 4 ) { # deposit + blocked $QUERY_UPDATE = "UPDATE users SET blocked=:blocked, deposit=:deposit WHERE user REGEXP :user"; $stmt = $db->prepare($QUERY_UPDATE); $stmt->execute(['blocked' => $value["blocked"], 'deposit' => $value["deposit"], 'user' => "{$user}-[0-9]+$"]); } elseif( $sync_type == 5 ) { # credit + blocked $QUERY_UPDATE = "UPDATE users SET blocked=:blocked, credit=:credit WHERE user REGEXP :user"; $stmt = $db->prepare($QUERY_UPDATE); $stmt->execute(['blocked' => $value["blocked"], 'credit' => $value["credit"], 'user' => "{$user}-[0-9]+$"]); } elseif( $sync_type == 6 ) { # deposit + credit + blocked $QUERY_UPDATE = "UPDATE users SET blocked=:blocked, credit=:credit, deposit=:deposit WHERE user REGEXP :user"; $stmt = $db->prepare($QUERY_UPDATE); $stmt->execute(['blocked' => $value["blocked"], 'credit' => $value["credit"], 'deposit' => $value["deposit"], 'user' => "{$user}-[0-9]+$"]); } } else { #echo "main user not found \n"; } } } else { #echo "No users found \n"; } } else { echo "Script must be running from console!"; }