BRat
o_0
PHP-GTK, немедленная запись в TextBuffer
Попросили написать програмку для обновления игры Timezero (стандартная криво работает с нашим прокси). Решил писать на php, т.к. давно хотел познакомиться с php-gtk.
Имеется код обработчика клика на кнопку Update ($txtInfo - обьект класса GtkTextView). Хочется чтобы при нахождении необновленного файла оперативно обновлялся текст в $txtInfo. Как можно это сделать? Сейчас он обновляется только после прохождения обоих циклов, до этого же времени программа виснет.
Попросили написать програмку для обновления игры Timezero (стандартная криво работает с нашим прокси). Решил писать на php, т.к. давно хотел познакомиться с php-gtk.
Имеется код обработчика клика на кнопку Update ($txtInfo - обьект класса GtkTextView). Хочется чтобы при нахождении необновленного файла оперативно обновлялся текст в $txtInfo. Как можно это сделать? Сейчас он обновляется только после прохождения обоих циклов, до этого же времени программа виснет.
PHP:
function updateTZ($wnd, $txtPath, $txtInfo) {
$buffer = new GtkTextBuffer();
$txtInfo->set_buffer($buffer);
$path_to_tz = str_replace('\\', '/', rtrim($txtPath->get_text(), '/\\'));
$files = recursiveGetFileNames($path_to_tz);
$tz_update_list = array_map('trim', file("http://game.timezero.ru/tzupd2.ini"));
foreach ($tz_update_list as $update_data) {
if (strlen($update_data)) {
list($update_md5_file, $update_file) = explode(' ', $update_data);
foreach ($files as $file) {
if ($file == $update_file && md5_file($file) != $update_md5_file) {
$buffer->insert($buffer->get_iter_at_offset($buffer->get_char_count()), "Updating file - ".$file."\n");
usleep(1000);
$update_file_contents = file_get_contents("http://game.timezero.ru/".$file);
$descr = fopen($file, 'w+');
fwrite($descr, $update_file_contents);
fclose($descr);
break;
}
}
}
}
}