VirtualBox & XWeb

Если вы обнаружили какие либо ошибки, недочеты и неудобства или другие незачеты в программе напишите нам об этом на этом форуме - мы бум исправлять
Ответить
questAny
Сообщения: 39
Зарегистрирован: 23 фев 2017, 19:16

VirtualBox & XWeb

Сообщение questAny » 09 окт 2017, 13:23

Есть сложности с работой на виртуальных компах (VirtualBox).
Разсинхронизация PHP и Хумулятора достигает 1/3 команд в случайном порядке. (то есть до 1/3 команд не выполняется)

Код: Выделить всё

Connect from PHP to XHE not found. Check XHE and PHP port and connection to xhe.
Это как-то можно подправить для более стабильной работы?

Аватара пользователя
bigfozzy
Site Admin
Сообщения: 3047
Зарегистрирован: 28 июл 2008, 17:24
Контактная информация:

Re: VirtualBox & XWeb

Сообщение bigfozzy » 09 окт 2017, 13:34

Добрый день, а каким образом вы запускаете ?

если команды не проходят - то это:
- проблемы с сетью
- блокирует антивирус или фаервол
- проблема с ОС
- перегружен процессор или не хватает памяти

Пришла или нет - комада на заданный хуман - можно узнать, включив лог команд или панель информации.

questAny
Сообщения: 39
Зарегистрирован: 23 фев 2017, 19:16

Re: VirtualBox & XWeb

Сообщение questAny » 09 окт 2017, 18:25

bigfozzy писал(а):
09 окт 2017, 13:34
если команды не проходят - то это:
- проблемы с сетью
- блокирует антивирус или фаервол
- проблема с ОС
- перегружен процессор или не хватает памяти
Поскольку ошибка пишется (кидает в отладку сообщение) не на каждую команду, а на случайную - то сеть и антивирус тут не при чём.
Проц и память да, сильно нагружены, но не впритык.
Просто проверять каждую команду вручную выполнилась она или нет как-то не очень хочется.
Может стоит добавить опцию в настройках "пытаться выполнить команду N раз в случае потери связи с Хуманом"?

Аватара пользователя
bigfozzy
Site Admin
Сообщения: 3047
Зарегистрирован: 28 июл 2008, 17:24
Контактная информация:

Re: VirtualBox & XWeb

Сообщение bigfozzy » 09 окт 2017, 22:46

Поскольку ошибка пишется (кидает в отладку сообщение) не на каждую команду,
Тут как раз такой механизм следующий - то, что кидается в панель отладки берется из консоли пхп.
А сама команда идет по сети через заданный порт по HTTP.

Вот механизм сам:
	// call a command on the server
	function call($command,$timeout=-1)
	{
		// время обработки комманд
		if ($timeout==-1)
			$timeout=XHEBaseObject::$COMMAND_TIME;

		// call server and return its answer
		$url = "http://".$this->server."/".$command;
		if(strlen($this->password))
		{
			if(strstr($url,"&")!=false || strstr($url,"?")!=false)
				$url .= "&password=".urlencode($this->password);
			else
				$url .= "?password=".urlencode($this->password);
		}
		$postvars="";
		if(strstr($url,"?"))
      		{
         		$indexPost=strpos($url,"?",0);
			$postvars=substr($url,$indexPost+1,strlen($url)-$indexPost);
			$url=substr($url,0,$indexPost);
	   	}
      		$postvars=$postvars."  ";

      		for ($i=0;$i<XHEBaseObject::$COMMAND_TRY_COUNT;$i++)
		{
					$headers = array("Content-Type:application/x-www-form-urlencoded");
	      		$cUrl = curl_init();
      			curl_setopt($cUrl, CURLOPT_URL, $url);
      			curl_setopt($cUrl, CURLOPT_POST, 1);      
	      		curl_setopt($cUrl, CURLOPT_POSTFIELDS, $postvars);
					curl_setopt($cUrl, CURLOPT_HTTPHEADER, $headers);
					curl_setopt($cUrl, CURLINFO_HEADER_OUT, TRUE);
      			curl_setopt($cUrl, CURLOPT_RETURNTRANSFER, 1);
      			curl_setopt($cUrl, CURLOPT_TIMEOUT, $timeout);
					$html=curl_exec($cUrl);
						curl_close($cUrl);
			if ($html===false)
				continue;
			else
				break;
		}
			
		// close php if not connect to XHE
		global $bClosePHPIfNotConnected;
		global $bWarningPHPIfNotConnected;
		if ($bClosePHPIfNotConnected===true && $html===false)
		{
  			echo("\nКомманда $url?$postvars не выполнена.Нет соединения с хуман эмулятором, проверьте совпадение портов и их доступность а также что програма запущена и не зависла.\n");			
			die("XWeb@exit");
		}
                if ($bWarningPHPIfNotConnected===true && $html===false)
  			echo("Connect from PHP to XHE not found. Check XHE and PHP port and connection to xhe.\nCommand $url?$postvars not runned.\n");
    		
	        $html = trim($html);
		return $html;
	}
+ предусмотрено несколько раз отправка - через установку XHEBaseObject::$COMMAND_TRY_COUNT
Т.е нет связи выдается - если curl post запрос не смог достучаться до программы.

questAny
Сообщения: 39
Зарегистрирован: 23 фев 2017, 19:16

Re: VirtualBox & XWeb

Сообщение questAny » 10 окт 2017, 14:13

bigfozzy писал(а):
09 окт 2017, 22:46
+ предусмотрено несколько раз отправка - через установку XHEBaseObject::$COMMAND_TRY_COUNT
Похоже, это то, что мне нужно! Спасибо! :D

Аватара пользователя
bigfozzy
Site Admin
Сообщения: 3047
Зарегистрирован: 28 июл 2008, 17:24
Контактная информация:

Re: VirtualBox & XWeb

Сообщение bigfozzy » 10 окт 2017, 15:14

Вот и хорошо, но все таки рекомендую проверить фаервол/антивирус - обычно такое поведение от того что - что-то режет команды по сети, тогда таких ситуация возникать не должно будет.

Ответить