Я создал скрипт для проверки в лентах резервного копирования в нашу ленточную библиотеку и проверил их с помощью TSM. Этот скрипт активируется с помощью SMS.php file_get_contents выполняет дважды
Наш сервер SMS получает команду для запуска регистрации, а затем выполняет скрипт на сервере TSM с помощью команды file_get_contents.
У меня проблема с тем, что сценарий выполняется дважды, когда есть лотки для регистрации (+20). Это приводит к ошибкам на сервере TSM, потому что перемещение медиа-команд также двойное.
Я преодолел это, введя вечный журнал регистрации времени при первом запуске файла file_get_content, так что команды arent выполняются дважды. Несмотря на то, что это исправляет проблему с двойной командой, она все еще представляет проблему, потому что сервер SMS отправляет обратно подтверждение, что скрипт запущен или нет. Таким образом, это означает, что при каждой проверке с помощью +20 лент оператор получает 2 сообщения, 1 говорит, что проверка не удалась, другая проверка началась.
Я подозреваю, что это вызвано из-за времени, которое требуется для передачи команд на сервер TSM (может занимать до 45 секунд).
Короче говоря, есть ли способ установить какой-то более продолжительный тайм-аут или дать какие-либо параметры/проверки, чтобы предотвратить это поведение? Заранее спасибо. Пути заменяются на *****.
SMS server code
//DRM checkin
if($auth == 1 AND strtolower($sms_body) == "******"){
$knowncommand = 1;
$url = "http://*******/******/checkin.php?remote&exec&sender=" . $from;
$dodrm = file_get_contents($url);
if ($stmt2 = $mysqli->prepare("UPDATE messagein SET checked = 1 WHERE checked = 0 ")) {
$stmt2->execute();
$stmt2->close();
}
}
TSM код сценария сервера:
if(isset($_GET['exec'])){
if(isset($_GET['remote'])){
$rcs = CheckRemoteCheckinStatus();
$to = $_GET['sender'];
//Execute drm check-in
$commit = CheckButtonStatus();
if($commit == "" AND $rcs == 0){
SetRemoteCheckinStatus();
$psDIR = "*****";
$psScript = "drm_checkin_retrieve.ps1";
$runCMD = $psPath. ' -ExecutionPolicy RemoteSigned '.$psDIR.$psScript;
exec($runCMD, $out);
SetCheckinStatus();
$psDIR = "*****";
$psScript = "QueueSMS.ps1 $to 'Check-in gestart...'";
$runCMD = $psPath. ' -ExecutionPolicy RemoteSigned '.$psDIR.$psScript;
exec($runCMD, $out);
}
else{
//Send Failed SMS
$psDIR = "*****";
$psScript = "QueueSMS.ps1 $to 'Fout: Geen Check-in mogelijk.'";
$runCMD = $psPath. ' -ExecutionPolicy RemoteSigned '.$psDIR.$psScript;
exec($runCMD, $out);
}
}
else{
$psDIR = "*******";
$psScript = "drm_checkin_retrieve.ps1";
$runCMD = $psPath. ' -ExecutionPolicy RemoteSigned '.$psDIR.$psScript;
exec($runCMD, $out);
echo "Check-in gestart...<br><br>";
SetCheckinStatus();
}
}
Вы ничего не избегаете нигде. научитесь использовать urlencode и escapeshellarg и htmlentities – hanshenrik