Что нового

Ограничение времени загрузки

vasykas

Новичок
Сообщения
24
Репутация
0
Есть массив с ссылками...

Код:
$read_sql = GUICtrlRead($dorki)
Func _sql()
GUISetState(@SW_LOCK)
  	$read_sqls = StringSplit(StringStripCR($read_sql), @LF)
For $i = 0 to UBound($read_sqls) - 1
   GUICtrlCreateLabel($read_sqls[$i], 140, 760, 520, 23)
   GUICtrlSetResizing(-1, 1)
   GUICtrlSetFont(-1, 9, 180, 4, $font)
       $inet = BinaryToString(InetRead($read_sqls[$i] & "'", 1))
       $com = StringRegExpReplace($inet, "Warning:", "") 
 If StringInStr($com,"in line") Or StringInStr($com,'not a valid MySQL') Or StringInStr($com,'SQL syntax') Then
      $iCounts += 1
       Dim $aTitlesa[$iCounts]
       $aTitlesa[$iCounts - 1] = $read_sqls[$i]
              GUICtrlSetData($sql, $aTitlesa[$iCounts - 1] & @CRLF, 1)
              GUICtrlSetFont(-1, 12, 180, 3)
			  $itog = $itog + 1
		
 EndIf
	 Next
		 WinSetState($sql, "", @SW_SHOW)
GUISetState(@SW_UNLOCK)
MsgBox(64, "Готово", "Надено:" & $itog)
EndFunc


читаю построчно ссылки с массива

Код:
$inet = BinaryToString(InetRead($read_sqls[$i] & "'", 1))


и при чтении если сайта нет или страница виснет
начинает грузить комп.
собственно вопрос:
как ограничить время чтения ссылки скажем на ссылку 3 сек.
и возможно ли снять нагрузку на комп (а то даже окно скрипта сдвинуть не могу)
 

beliy

Продвинутый
Сообщения
372
Репутация
72
и возможно ли снять нагрузку на комп (а то даже окно скрипта сдвинуть не могу)
попробуй перед
Код:
Next

добавить
Код:
Sleep(100)


как ограничить время чтения ссылки скажем на ссылку 3 сек.
попробуй переделать используя TCP-функции
там есть подробный пример, время таймаута меняется в строке
Код:
Until $iError <> 0 Or TimerDiff($iTimer) > 5000
 
Автор
V

vasykas

Новичок
Сообщения
24
Репутация
0
Дело в том что мне надо листать в браузере (гугле типа Следующая)
браузер запущен в скрытом режиме
так что Tcp отпадает также как и Sleep
 

beliy

Продвинутый
Сообщения
372
Репутация
72
возможно я вас удивлю, но функция
Код:
InetRead
работает по тому же принципу что и TCP-функции, но в отличии от первого, tcp-функции предоставляют более гибкие возможности.
По поводу использования
Код:
Sleep(100)

то вообще не понятно, каким образом он помешает "листать", просто сделайте для теста то что я написал и посмотрите. 100мс нормальная задержка для вашей задачи(вручную вы листаете с задержкой поболее ;)), а нагрузка спадет значительно.
 
Автор
V

vasykas

Новичок
Сообщения
24
Репутация
0
Вот код (Да тормоза происходят как раз при проверке ссылки именно вот здесь: $inet = BinaryToString(InetRead($read_sqls[$i] & "'", 1))

Код:
Local $aTitles[1], $oIE, $oForm, $oQuery, $oLinks, $iCount, $sLinkHTML, $sLinkText
$oIE = _IECreate("http://www.google.com/", 0, 1)
   _IELoadWait($oIE)
$oForm = _IEFormGetObjByName($oIE, "gbqf")
$oQuery = _IEFormElementGetObjByName($oForm, "q")
   _IEFormElementSetValue($oQuery, 'allinurl:' & $dom & $dork)
   _IEFormSubmit($oForm)
For $ww = 1 To $we
      $oLinks = _IELinkGetCollection($oIE)
If IsObj($oLinks) Then 
    $iCount = 0 
 For $oLink In $oLinks
        $sLinkHREF = $oLink.href
	    
;Captcha
	If StringInStr($sLinkHREF, "sorry") then 
	  GUISetState()
	$oIE1 = _IECreateEmbedded ()
    $GUIActiveX2 = GUICtrlCreateObj($oIE1, 10, 380, 300, 350)
   $oIE2 = _IENavigate ($oIE1, $sLinkHREF)
;	$oForm = _IEFormGetCollection($oIE2, 0)
$Form = _IEFormGetObjByName($oIE2,'')
$Query = _IEFormElementGetObjByName($Form, "")
_IEFormElementSetValue($Query, '')
;_IEAction($buttonz, 'click')
_IEFormSubmit($Form)
  ;_IELoadWait($oIE1)
	  EndIf  
;End Captcha
        
If Not StringInStr($sLinkHREF, "google") And Not StringInStr($sLinkHREF, "javascript") And Not StringInStr($sLinkHREF, "blogger") And Not StringInStr($sLinkHREF, "youtube") Then ; All non-Google links
   $iCount += 1 
   ReDim $aTitles[$iCount]
   $aTitles[$iCount - 1] = $sLinkHREF
   GUICtrlSetData($dorki, $aTitles[$iCount - 1] & @CRLF, 1)
   GUICtrlSetFont(-1, 10, 180, 3)
     EndIf
    Next
EndIf
    ;$hFile = FileOpen($sFile, 1)
   ;_FileWriteFromArray($hFile, $aTitles, 1)
Sleep(100)
   _IELinkClickByText ($oIE, "Следующая")
   If _IELinkClickByText ($oIE, "Следующая") = '' Then
	  $ww = $we
For $t = 1 To 2
   ProcessClose("iexplore.exe")
Next
EndIf
Next
For $i = 1 To 2
   $aArray = _ArrayUnique($aTitles, 1, 1)
    _ArrayDelete($aArray, 0) ; Delete first two non-Google links (YouTube and Blogger)
 Next
For $t = 1 To 2
   ProcessClose("iexplore.exe")
Next


мне с Tcp капчу не обойти (капча примерно через страниц 30 выскакивает), а Sleep стоит 1000 если меньше то
лишние ссылки добавляються в GUICtrlCreateEdit
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,323
vasykas [?]
и попутный вопрос
Предупреждение За нарушение общих правил (пункт В.4):
Не лепите несколько вопросов разной тематики в один пост. По типу "Ребят, а ещё такой вопрос...". Каждый вопрос в свою тему.


С уважением, ваш Модератор.
 
Верх