我创建了一个脚本来检查备份磁带到我们的磁带库中并使用TSM检查它们。此脚本由SMS激活。
我们的SMS服务器收到启动签入的命令,然后使用file_get_contents命令在TSM服务器上执行脚本。
我有一个问题,即当有大量要检入的磁带时,脚本正在执行两次(+20)。这会导致TSM服务器出错,因为移动媒体命令也是双倍的。
我通过在第一个file_get_content启动时输入初始时间戳记录来克服这个问题,因此命令没有执行两次。尽管这解决了双重命令问题,但它仍然存在问题,因为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 Server脚本代码:
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();
}
}
答案 0 :(得分:0)
如果您有权访问php.ini,则此topic可能非常有用
如果您只想在特定脚本中增加超时,可以使用set_time_limit
或者换句话说,在php脚本的开头:
Tag Parameter isHLOP isHHAOPT
-------- --------- ------ --------
AI17611A HLPR -1 -1
AI17611B HLPR -1 0
AI17611C HLPR 0 -1