Надеюсь ты только притворяешься идиотом.
Не нравится равурленкоде возьми бейс64/бейс62/бейсN -- главнй смысл тут преобразовать все в чистый ASCII который тебя устроит и будет возможность сделать обратное преобразование имени.
Я по-моему точно описал проблему. Мне нужно сконвертировать кириллический текст так, чтобы имя папки отображалось нормально, а не каракулями. Конвертация с помощью iconv не помогает, выдает ошибку "Detected an illegal character in input string". Причем тут urlencode() и base64 я не понимаю. Может пример приведете, где то о чем вы говорите работает вообще?
Если нужно сохранить исходное имя -- rawurlencode() его, так в ФС и писать. (Добавление)
freelsd пишет:
windows же поддерживает utf-8
Только не в NTFS, там чуть ли не цп-866
Ну нет, rawurlencode не годится. Суть в том что строка, которой мне нужно обозвать папку это обычный текст в странице. Но страница в utf-8 выдает текст. Но в консоли эта строка выглядит как черти-что, а папка в windows создается какими-то кракозябрами. Причем, если записать строку в файл, то она нормально по-русски читается. Почему так происходит?
Я получаю страницу в utf-8, в ней нахожу строку и нужно создать директорию, которая называется именем этой строки. Но в консоли и на выходе получаются кракозябры, вместо нормального имени папки. Пробовал записать строку в текстовый файл - нормально отображается. В чем может быть проблема и как рещить? Пробовал через iconv из utf-8 в cp-1251 - не помогло, на выходе пустая строка.
У меня есть скрипт, который обрабатывает некоторые данные, но пока он все их не обработает, результата не будет. Но мне нужно, чтобы он постепенно выводил обработанные данные, чтобы пользователь видел ту часть данных, которая уже отпроцесилась. Как этого достичь?
Не нужно вообще раскалупывать этот полурабочий овощ на обдутом матрасе.
Есть куча межОСевых проблем с тредами пых-пыха, кроме того, он еще и не умеет все, что должны уметь треды, тем более по POSIX-стандартам (как минимум join, detach, SIG_*).
Отсюда вытекает следующая архитектура:
1) Запускать не потоки, а процессы, хош через exec() хош через что, передавая нужные параметры запускаемым процессам.
2) Для общих данных между этими процессами (мы же имитируем потоки, да?) можно, и даже нужно, использовать shared memory + semaphores. Но! Будь осторожен: у пых-пыха есть две реализации шареда, одна - только его внутреняя "виртуальная" и никакие внешние процессы не смогут увидеть и прочитать из неё, что либо, точнее прочитать то прочитают, но там будет пыхо-опкод какой-то, вторая - реальная, которая выделяет реальный кусок памяти и туда можно писать-читать межпроцессно! всякую бинарщину.
Если же по каким-то причинам шаред будет не доступен (как модуль апача, не кли, не цги), можешь погонять данные между процесами тупо через файлы и их эксклюзивную пыхоблокировку LOCK_EX/LOCK_UN. Блокировка файла в целом сымитирует семафоры для шареда.
3) Управлять всеми этими "потоками" ты будешь из главного скрипта, его кстати можно и не крутить постоянно в бесконечном цикле, а так, зашел, спросил статус, выполнил действие.
Как узнать что "поток" сдох? Пусть новый "поток" пишет в шаред или файл что он начал свою работу (ессно + время старта + PID + другая хрень по желанию), а по окончании - удаляет из стека себя любимого. Так мониторный скрипт сможет увидеть, что "поток" сдох, узнав что запись трудоголика не удалена, т.е. даже с PID-файлами можно будет не заморачиваться - пусть "потоки" пишут о себе прямо в шаред или файл.
Аглы?
Спасибо конечно, что подробно расписал, но во-первых я нубас, и мне придется подробно по каждому пункту перечитывать маны. А во-вторых, не хотелось бы еще такие костыли сколачивать. Хотелось бы понять что не так и исправить.
LIME пишет:
Или Gearman
Вроде какое-то громоздкое решение, не? Мне в общем-то тривиальную довольно задачу нужно решить, посему хотелось бы максимально простыми способами.
Мне нужно реализовать таймаут у потока, если программа, которую он выполняет зависла, например более чем на 60 секунд. Как это сделать? Еще не понятно почему, у меня $workers[$i]->kill(); возвращает false. В чем может быть проблема? Спасибо
Я вот не могу понять, как нужно составить регексп, если мне нужно чтобы он срабатывал, когда в строке встречаются две последовательности abc и def, неважно в каком порядке. Подскажите, плиз.
готовое решение парнсинга функций С/C++ ? Я думаю очень вряд ли! Если вам нужно отслеживать изменения то сказал сказал DeepVarvar git. Создайте локальный репозиторий и заливайте изменения туда, но по-моему git это лучший вариант в данной ситуации, парсить C++ синтаксис это полный бред.
Нужно локальное решение. Да и со всеми особенностями git и svn я не знаком. А про остальные системы не слышал, лол. Но суть не в этом, а в том что нужно написать скрипт для такой задачи. Верным путем является, значит, индексирование скобок?
Тащить жадным, и сматченные куски передавать ниже по цепочке рекурсивно. Но это тоже все Г, самый правильный путь - перебирать посимвольно, индексируя кол-во открытых-закрытых скобок и пр..
А вообще, нахрена?
Например есть несколько версий проекта на С/С++. Нужно показать какие функции менялись, и что в них изменилось.