Skip to content

Thinker-as/aventus_test_task

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 

Repository files navigation

Задание 1. Немного логики.
Дается случайный текст в файле (файл следует приложить к заданию, содержание не имеет значения, кодировка - UTF-8). PHP скрипт должен прочитать текст и заменить каждое слово в тексте, позиция которого делится без остатка на 3 - словом -ТРИ-, каждое слово, позиция которого делится без остатка на 5 - словом -ПЯТЬ-, а если позиция слова делится без остатка и на 3 и на 5 - заменить его словом -ПЯТНАДЦАТЬ-. После обработки текста - результат сохранить в новом файле.

###Решение: Файл ./word_replacer/replace.php.

Для запуска, находясь в каталоге со скриптом выполнить команду передав в качестве аргумента имя файла с текстом в кодировке utf-8

Пример:

php replace_words.php example.txt

Файл должен быть для открытия должен быть доступен для чтения.

У пользователя, от имени которого запускается скрипт должны быть права на создание файла в директории ./word_replacer.

Результатом станет файл с суффиксом "_with_replacement_words" в названии.

Затраченное время - 45 минут.

Задание 2. Дебаг.
Дана программа file_manager.php которая работает как файл - менеджер (показывает, какие файлы и каталоги находятся в одной директории с программой). Однако, по неизвестным причинам, скрипт в файле file_manager.php начинает очень сильно тормозить при большом количестве файлов (больше 20). Необходимо определить, какая функция работает медленно, и точно указать, что же так негативно влияет на время работы программы. Объясните, как было найдено решение.

###Решение:

Исходный файл: ./file_manager/file_manager.php

Файл c решением./file_manager/WorkingFileManager.php

Перед запуском скрипта с сомнительным содержанием команд изменения прав доступа, потребовалось привести его к более понятному для человека виду. Для этого был написан скрип ./file_manager/parser.php. Запуск парсера необходимо производить из каталога с исходным файлом Пример:

php parser.php

Это приведет к созданию нового файла ./file_manager/FileManager.php

Открыв этот файл с использованием IDE содержимое можно отформатировать.

Проанализировав код становится понятным, что причиной замедления работы становится вызов функции sleep() c аргументом 1 в рекурсивно вызываемом методе. Таким образом, при каждом новом найденном файле/каталоге происходит засыпание скрипта на 1 секунду.

About

Test task

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages