Функции по работе с файлами php вместо встроенных

На основе большого опыта работы с движком HumanEmulator, обратил внимание, что можно повысить отказоустойчивость, если не использовать функций работы с файлами, такие как: $textfile и $file_os . Это связанно с тем, что HumanEmulator принимает команды, как запросы серверу, соответственно большой поток таких команд может привести к критическим ошибкам в работе приложения, также наблюдается небольшой прирост к скорости исполнения.   Ниже представлен альтернативный список методов.


//Получить размер фала в байтах
$file_size = $file_os->get_size("res\\text.txt");

//Альтернатива
$file_size = filesize ("res\\text.txt");

//Получить число строчек в файле
$lines_count = $textfile->get_lines_count("data\\text.txt");

//Альтернатива
$lines_count = get_lines_count("data\\text.txt");

// Создание/Перезапись файла и запись в него текста
$textfile->write_file($file_path,$text,60);

//Альтернатива
file_put_contents($file_path, $text);

// Добавить текст в конец файла
$textfile->add_string_to_file("res\\file.txt", $text, 60) ;

//Альтернатива
file_put_contents($file, $str, FILE_APPEND | LOCK_EX);

//Проверить существование файла
if($file_os->is_exist("res\\text.txt")){
}

//Альтернатива
if(file_exists("res\\text.txt")){}

//Удалить файл
$file_os->delete("res\\text.txt"))

//Альтернатива
unlink("res\\text.txt");

//Заменить строки в файле на другое значение
$textfile->replace_string("data\\text.txt", "data\\text.txt", $old_value, $new_value, 60);

//Альтернатива (для одного и того же файла)
//read the entire string
$str=file_get_contents($file);

//replace something in the file string - this is a VERY simple example
$str=str_replace($oldValue, $newValue, $str);

//write the entire string
file_put_contents($file, $str);

//Получить n строчку из файла
$val = $textfile->get_line_from_file("data\\text.txt", false, $n, 60);

//Альтернатива
function get_line_from_file($file, $line_num, $delimiter="\n")
{
/*** set the counter to Zero ***/
$i = 0;

/*** open the file for reading ***/
$fp = fopen( $file, 'r' );

/*** loop over the file pointer ***/
while ( !feof ( $fp) )
{
/*** read the line into a buffer ***/
$buffer = stream_get_line( $fp, 9999, $delimiter );
/*** if we are at the right line number ***/
if( $i == $line_num )
{
/*** return the line that is currently in the buffer ***/
return rtrim($buffer);
}
/*** increment the line counter ***/
$i++;
/*** clear the buffer ***/
$buffer = '';
}
return false;
}

Список UserAgent ( UserAgent list)

//Код для получения 0 линии в файле
//Code for get 0 line number from target file
$user_agent= $textfile->get_line_from_file("data\\useragents.txt", false, 0, 60);

// Код для установки браузеру UserAgent в HumanEmulator
// Code for set UserAgent ащк IE in HumanEmulator
$browser->set_user_agent($user_agent);

Файл useragents.txt содержит список проверенных UserAgent ов
File useragents.txt contains list valid UserAgent s

Google drive

HumanEmulator примеры использования. Сборка тестов

clicktesting

В последних версиях HumanEmulator появилась возможность использовать .NET C#.

В продолжении темы использования .NET хочу представить исходный код UnitTest проекта сделанного на основе представленных в HumanEmulator новых классов.

К сожалению на текущий момент для ознакомления с функциональностью нужно производить ряд манипуляций что не вполне удобно. Я свел все методы в один проект и сделал это в понятном виде, в виде тестов.

На картинке пример полностью переделанного рабочего метода по этому образцу можно редактировать остальные методы.

Для работы тестов необходимо запустить экземпляр HumanEmulator настроенный на порт 7015.

При запуске в  режиме Debug в Output должен выйти следующий текст:

Запуск теста interface.click
1. Перейдем на полигон :
2. Щелкнем по элементу с href равным http://www.bigfozzy.com/
3. Кликнем по элементу с текстом SEO Магазин и выведем его координаты
Координаты x = -1 y = 615

Ссылка для скачивания : googledrive

Если запуск не происходит, то следует перезапустить HumanEmulator.

В настоящий момент наблюдаются сбои в работе на стороне сервера, то есть иногда может потребоваться перезагрузка компьютера.

Ознакомление HumanEmulator .NET C#

В последних версиях HumanEmulator появилась возможность использовать .NET C#.

Внимательные пользователи смогли обнаружить в проекте две новые папки:

XWeb\Human Emulator Advanced 4.9.19\Templates CSHARP — содержит проект .NET библиотеки для работы с сервером HumanEmulator.

XWeb\Human Emulator Advanced 4.9.19\Test Samples CSHARP — содержит примеры использования классов.

Каждый пример отдельный файл со статическим методом Main.

Для запуска необходимо:

  • создать проект консольного приложения, поместить туда класс из примера(можно заменить пустой файл Program.cs)
  • добавить проект XWeb\Human Emulator Advanced 4.9.19\Templates CSHARP \Lib\XHE\XHE\XHE.csproj
  • запустить приложение HumanEmulator. Класс \XWeb\Human Emulator Advanced 4.9.19\Templates CSHARP\Lib\XHE\XHE\XHEScript.cs содержит строку
    public static string server = «127.0.0.1:7017» — это локальный адрес нашего компьютера и порт 7017, что означает, что необходимо запущенный экземпляр HumanEmulator установить на 7017 порт (в данном случае).
  • теперь можно скомпилировать и запустить консольное приложение.

Вот проект-пример, что должно было получится скачать здесь.

Примечание: Думаю большинство пользователей не ведают о том что запускаемое приложение HumanEmulator является двойным. Одновременно клиент и управляемый сервер.

В запущенном экземпляре HEmulator можно наблюдать за переходами на целевом сайте. Если вы скачали пример то можно наблюдать такую последовательность работы:

1.Переход по адресу www.humanemulator.net/poligon/anchor.html

PoligonAnchorHref

2. Переход щелчком мыши по элементу с href равным http://www.bigfozzy.com/

SEomarket3. Переход на SEO Магазин

BigfozzycomА вот как будет выглядеть консоль вывода приложения:

ConsoleКак видно привычный процесс теперь происходит в двух окнах. HEmulator теперь сервер(управляемый) . А наше консольное приложение посылает ему команды (Request) и принимает ответы с данными о выполнении.

Вывод:

Плюсы:

  • Стал доступен  весь арсенал возможностей, что и был в базовой версии для .NET.
  • HumanEmulator теперь можно интегрировать в другие проекты
  • Теперь можно использовать мощь интегрированной среды разработки VisualStudio
  • Нет больше детских болезней php

Минусы:  Интерфейс пользователя меню и подсказки HumanEmulator в помощь разработчику тепtрь не доступны, но для серьезной работы это не будет помехой.

 

Добро пожаловать!

Этот блог предназначен для освещения возможностей HumanEmulator  . Этот продукт, который обладает большим потенциалом для решения различных задач.

Я считаю, что каждая статья, которая здесь будет предоставлена станет открытием новых интересных возможностей применения HumanEmulator а.