повторюсь, но вообще не вижу смысла проверять порт.
может разделишь магазины на два сетевых интерфейса, поднимешь версию мускула и добавишь ему памяти?
Может действительно нужно решать проблему а не лепить заплатки.
Были у одного клиента нашего проблемы тоже с обменом касс и подчиненных серверов с СГО...решилось переводом на х64 мускуля и выделением ему 12 ГБ оперативы-после этого вот уже пол года ни одного зависания и проблемы с обменами, выгрузками...как-то так.
@Echo Off
Set HOSTNAME=hOstnAmE
Set USERNAME=UsErnAmE
Set PASSWORD=pAsswOrd
For /F "Tokens=1,2 Delims= " %%a In ('C:\MySQL\bin\mysql.exe -h%HOSTNAME% -u%USERNAME% -p%PASSWORD% --column-names^=false --table^=false -Dukmserver -e"select 'response',value FROM local_server_param WHERE id='server_port'"') Do If "%%~a"=="response" (
Echo Server port is: %%~b
Set PORT=%%~b
)
Set NEWPORT=
If "%PORT%"=="10000" Set NEWPORT=20000
If "%PORT%"=="20000" Set NEWPORT=10000
If Not "%NEWPORT%"=="" (
C:\MySQL\bin\mysql.exe -h%HOSTNAME% -u%USERNAME% -p%PASSWORD% -Dukmserver -vvv -e"UPDATE local_server_param SET value=%NEWPORT% WHERE id='server_port'" >>%%~dp0log.log 2>&1
REM restart ukmservice here
)
Pause
После слова "Delims=" стоит символ табуляции.
2.Замена порта в одно действие ("триггер"), например, попеременно 10000 и 20000:
UPDATE local_server_param SET value=ELT(value/10000,20000,10000) WHERE id='server_port';
Можно это делать в батнике, а можно и в , который стал доступным начиная с версии 5.1 (кстати, мы уже вовсю 5.6.11 юзаем на СГО, в понедельник обновляем до 5.6.12).
Каждое выполнение запроса будет менять номер порта с 10000 на 20000 и 20000 на 10000. Останется перезапустить ukmservice.
Но рестарт ukmservice - это плохо..