Действовал похожим образом храня контрольные суммы аватарок в массиве и файле.
Всё что подсказал Андрей правильно. Ещё хотелось бы добавить, зачем ты каждый раз считываешь массив из файла?
Читать нужно один раз в начале. При сравнении доставать элементы не ARRPOP, а по индексу $arr[$a].
Массив не очищать а по необходимости только добавлять, попутно дописывая в файл.
Зачем лишние задержки после каждого присваивания? Там они ни к чему. стр 23,25,29,34,36,38,42,50,53,58,61,65
А вот здесь они маленькие 16,71 и особенно 18
Зачем лишние GETSCREEN если не происходило никаких изменений на экране? стр 30, 40
print в цикле стр.52 тоже плохая идея. принт выполняется очень медленно. И в цикле его стоит оставлять только во время отладки.
Полезнее было 49 строкой поставить print($v_massive) тогда бы увидел свою преведущую ошибку приводящую к сильному, ненужному росту размера массива.