====== Несколько 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!";
}