Alternativa para WScript.Sleep

1

Estou usando o WhatsUpGold para monitorar o tempo de atividade dos serviços e um deles é um servidor MySql. Como não há suporte explícito para o MySql, sou forçado a escrever um script VBS para fazer isso. Infelizmente, o WhatsUpGold não suporta WScript.Sleep. A alternativa que está em seu fórum é este mas parece um hack sujo. Há alguma alternativa para os dois que eu possa usar? Eu realmente prefiro não ter que copiar / colar as funções.

    
por Richard Nienaber 29.06.2009 / 12:11

5 respostas

2

Ooh, agora isso é um truque hacky. No entanto, funcionará se o usuário que o aplicativo está executando não estiver bloqueado, de modo que não possa usar o wshell.run. Eu acho que eu gosto mesmo ...

Se o aplicativo estiver sendo executado em uma caixa à qual você tenha acesso de administrador, para que você possa registrar uma DLL COM, quando eu quiser dormir em um código ASP clássico para teste (às vezes é útil inserir atrasos artificiais) uma DLL livre simples que infelizmente não está mais disponível a partir da fonte original ( veja aqui para alguma discussão ). Se você quiser experimentá-lo, coloquei uma cópia em aqui . Para invocar, use algo como Dim WaitObj: Set WaitObj = Server.CreateObject ("WaitFor.Comp"): WaitObj.WaitForSeconds 10

Não há dúvida de que a biblioteca é apenas um invólucro em torno da chamada da API de suspensão, portanto, você pode criar a sua própria se não quiser confiar em alguma biblioteca aleatória de alguma parte 3D não investigada (confiando no código anônimo de fontes não verificadas não é algo que eu não recomendaria, e eu conto como uma fonte não-revisada). Para o VB6, a chamada seria declarada como Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long) .

A primeira coisa que gostaria de fazer neste ponto, antes de tentar qualquer um dos itens acima, é perguntar no StackOverflow para ver o que outras pessoas usam para esperas não ocupadas no ASP clássico. Você pode descobrir que existe outra biblioteca que ainda é suportada por seu criador, ou uma técnica melhor. Como o truque ping está usando CreaetObject , suspeito que qualquer coisa utilizável em um contexto ASP clássico possa ser usada em seu aplicativo.

    
por 29.06.2009 / 13:19
1

Ugh! Eu não usei nenhum software "WhatsUp" em anos , então perdi a familiaridade. Uma rápida revisão do fórum deles e uma pesquisa com meu amigo Gooogle confirma os hacks feios que você mencionou.

Eu iria abusar do PING, como fazemos em arquivos de lote, às vezes, para obter um atraso. É inteligente, mas feio.

A alternativa de ser feio seria criar código que não precisasse de nenhuma funcionalidade de "suspensão". Como você está monitorando o MySQL? Você está se conectando a ele com o ODBC e executando uma consulta para julgar sua "vitalidade"?

    
por 29.06.2009 / 12:59
0

O truque ping -n X 127.0.0.1 é um hack, mas não particularmente sujo. É amplamente conhecido e usado em todos os tipos de scripts em lote do Windows desde o último século;)

    
por 29.06.2009 / 13:00
0

você já tentou SleepCMD

    
por 30.06.2009 / 05:19
0

Por que não usar um método de setTimeout ? Veja as seguintes colunas "Hey, Scripting Guy":

link

link

    
por 15.12.2009 / 20:30