| Задание 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 секунду.