PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи

Страниц (8): « 1 2 3 4 5 6 [7] 8 »

> Найдено сообщений: 108
freelsd Отправлено: 08 Октября, 2015 - 12:03:12 • Тема: Проблема: mkdir() с именем папки в utf8 • Форум: Вопросы новичков

Ответов: 27
Просмотров: 1204
DeepVarvar пишет:
Надеюсь ты только притворяешься идиотом.
Не нравится равурленкоде возьми бейс64/бейс62/бейсN -- главнй смысл тут преобразовать все в чистый ASCII который тебя устроит и будет возможность сделать обратное преобразование имени.

Я по-моему точно описал проблему. Мне нужно сконвертировать кириллический текст так, чтобы имя папки отображалось нормально, а не каракулями. Конвертация с помощью iconv не помогает, выдает ошибку "Detected an illegal character in input string". Причем тут urlencode() и base64 я не понимаю. Может пример приведете, где то о чем вы говорите работает вообще?
freelsd Отправлено: 08 Октября, 2015 - 11:47:22 • Тема: Проблема: mkdir() с именем папки в utf8 • Форум: Вопросы новичков

Ответов: 27
Просмотров: 1204
DeepVarvar пишет:
Если нужно сохранить исходное имя -- rawurlencode() его, так в ФС и писать.
(Добавление)
freelsd пишет:
windows же поддерживает utf-8
Только не в NTFS, там чуть ли не цп-866

Ну нет, rawurlencode не годится. Суть в том что строка, которой мне нужно обозвать папку это обычный текст в странице. Но страница в utf-8 выдает текст. Но в консоли эта строка выглядит как черти-что, а папка в windows создается какими-то кракозябрами. Причем, если записать строку в файл, то она нормально по-русски читается. Почему так происходит?
freelsd Отправлено: 08 Октября, 2015 - 11:39:51 • Тема: Проблема: mkdir() с именем папки в utf8 • Форум: Вопросы новичков

Ответов: 27
Просмотров: 1204
andrewkard пишет:
freelsd пишет:
нужно создать директорию, которая называется именем этой строки

директории лучше создавать в латинице


А если необходимо создать папку с кириллическими символами? Я кстати не понимаю, почему так происходит, windows же поддерживает utf-8.
freelsd Отправлено: 08 Октября, 2015 - 11:07:19 • Тема: Проблема: mkdir() с именем папки в utf8 • Форум: Вопросы новичков

Ответов: 27
Просмотров: 1204
Я получаю страницу в utf-8, в ней нахожу строку и нужно создать директорию, которая называется именем этой строки. Но в консоли и на выходе получаются кракозябры, вместо нормального имени папки. Пробовал записать строку в текстовый файл - нормально отображается. В чем может быть проблема и как рещить? Пробовал через iconv из utf-8 в cp-1251 - не помогло, на выходе пустая строка.
freelsd Отправлено: 22 Сентября, 2015 - 14:03:30 • Тема: Постепенный вывод работы php-скрипта • Форум: Вопросы новичков

Ответов: 2
Просмотров: 246
caballero, спасибо, похоже на то что нужно. А как такое с помощью ajax реализовать? Какова примерна схема.
freelsd Отправлено: 22 Сентября, 2015 - 12:06:54 • Тема: Постепенный вывод работы php-скрипта • Форум: Вопросы новичков

Ответов: 2
Просмотров: 246
У меня есть скрипт, который обрабатывает некоторые данные, но пока он все их не обработает, результата не будет. Но мне нужно, чтобы он постепенно выводил обработанные данные, чтобы пользователь видел ту часть данных, которая уже отпроцесилась. Как этого достичь?
freelsd Отправлено: 12 Апреля, 2015 - 11:45:48 • Тема: Таймаут потока PThreads, как реализовать? • Форум: Программирование на PHP

Ответов: 5
Просмотров: 578
DeepVarvar пишет:
Ыыыы... Ну вот еще одна идея либу написать, которую сам тут расписал. Жаль только времени нет нафига..

А есть какие-нибудь мысли почему kill() может не работать?
freelsd Отправлено: 12 Апреля, 2015 - 07:28:07 • Тема: Таймаут потока PThreads, как реализовать? • Форум: Программирование на PHP

Ответов: 5
Просмотров: 578
DeepVarvar пишет:
Не нужно вообще раскалупывать этот полурабочий овощ на обдутом матрасе.
Есть куча межОСевых проблем с тредами пых-пыха, кроме того, он еще и не умеет все, что должны уметь треды, тем более по POSIX-стандартам (как минимум join, detach, SIG_*).
Отсюда вытекает следующая архитектура:

1) Запускать не потоки, а процессы, хош через exec() хош через что, передавая нужные параметры запускаемым процессам.

2) Для общих данных между этими процессами (мы же имитируем потоки, да?) можно, и даже нужно, использовать shared memory + semaphores. Но! Будь осторожен: у пых-пыха есть две реализации шареда, одна - только его внутреняя "виртуальная" и никакие внешние процессы не смогут увидеть и прочитать из неё, что либо, точнее прочитать то прочитают, но там будет пыхо-опкод какой-то, вторая - реальная, которая выделяет реальный кусок памяти и туда можно писать-читать межпроцессно! всякую бинарщину.

Если же по каким-то причинам шаред будет не доступен (как модуль апача, не кли, не цги), можешь погонять данные между процесами тупо через файлы и их эксклюзивную пыхоблокировку LOCK_EX/LOCK_UN. Блокировка файла в целом сымитирует семафоры для шареда.

3) Управлять всеми этими "потоками" ты будешь из главного скрипта, его кстати можно и не крутить постоянно в бесконечном цикле, а так, зашел, спросил статус, выполнил действие.

Как узнать что "поток" сдох? Пусть новый "поток" пишет в шаред или файл что он начал свою работу (ессно + время старта + PID + другая хрень по желанию), а по окончании - удаляет из стека себя любимого. Так мониторный скрипт сможет увидеть, что "поток" сдох, узнав что запись трудоголика не удалена, т.е. даже с PID-файлами можно будет не заморачиваться - пусть "потоки" пишут о себе прямо в шаред или файл.

Аглы?


Спасибо конечно, что подробно расписал, но во-первых я нубас, и мне придется подробно по каждому пункту перечитывать маны. А во-вторых, не хотелось бы еще такие костыли сколачивать. Хотелось бы понять что не так и исправить.

LIME пишет:

Или Gearman


Вроде какое-то громоздкое решение, не? Мне в общем-то тривиальную довольно задачу нужно решить, посему хотелось бы максимально простыми способами.
freelsd Отправлено: 11 Апреля, 2015 - 15:27:21 • Тема: Таймаут потока PThreads, как реализовать? • Форум: Программирование на PHP

Ответов: 5
Просмотров: 578
У меня есть такой код:

PHP:
скопировать код в буфер обмена
  1. <?PHP
  2.  
  3. /**
  4. * Author: Abu Ashraf Masnun
  5. * URL: http://masnun.me
  6. */
  7. //define("TMT",3);
  8.  
  9. class WorkerThreads extends Thread
  10. {
  11.     private $workerId;
  12.  
  13.     public function __construct($string)
  14.     {
  15.         $this->command_string = trim($string);
  16.     }
  17.  
  18.     public function run()
  19.     {
  20.                                        
  21.         echo $this->command_string." ".Thread::getCurrentThreadId()."\n";
  22.                 //sleep(rand(0, 3));
  23.                 $str = "C:\\Users\\Alex\\Desktop\\2web\\phantom\\phantomjs.exe C:\\Users\\Alex\\Desktop\\2web\\test.js ";
  24.                
  25.                 $url = $this->command_string;
  26.                 $d = explode("://",$url);
  27.                 $ex_str = $str." ".$url." > ".$d[1].".html";
  28.                 //$ex_str = $str." ".$url;
  29.                 //echo $ex_str;
  30.                 //$ex_str =  escapeshellarg($ex_str);
  31.                 //echo $ex_str;
  32.                
  33.                 exec($ex_str, $out);
  34.        
  35.                 //print_r($out);
  36.     }
  37. }
  38.  
  39. //$data = file('sites.txt');
  40. $data_f = file('sites_x.txt');
  41. print_r($data_f);
  42. $data = array();
  43. $data_size = count($data_f);
  44. for($i = 0;$i<$data_size;$i++)
  45. {
  46.         $info = explode(";",trim($data_f[$i]));
  47.         if($info[1] === 'y')
  48.                 continue;
  49.         $data[] = $info[0];
  50. }
  51. print_r($data);
  52. $data_size = count($data);
  53. // Worker pool
  54. $workers = [];
  55. $t_count = 4;
  56. $flag = 1;
  57. $k = 0;
  58. //echo "$data_size";
  59.  
  60. while($flag === 1)
  61. {      
  62.        
  63.        
  64.         /*
  65.         //echo "$k\n";
  66.         if($k >= $data_size)
  67.         {      
  68.                 //echo "111"; exit();
  69.                 $flag = 0;
  70.                 break 2;
  71.         }
  72.         */
  73.         $c_w = count($workers);
  74.  
  75.         if($c_w < $t_count)
  76.         {
  77.                 for($i = $c_w; $i<$t_count - $c_w;$i++)
  78.                 {
  79.                         if($k >= $data_size)
  80.                         {
  81.                                 $flag = 0;
  82.                                 break;
  83.                         }      
  84.                        
  85.                         $workers[$i] = new WorkerThreads($data[$k]);
  86.                         //echo $data[$k]."\n";
  87.                         echo "worker $i started\n";
  88.                         $workers[$i]->start();
  89.                         $k++;  
  90.                 }
  91.        
  92.         }
  93.  
  94.         $c_w = count($workers);
  95.         for($i=0;$i<$c_w;$i++)
  96.         {
  97.                        
  98.                         $workers[$i]->kill();
  99.                         unset($workers[$i]);
  100.                         echo "unset $i\n";
  101.                         //var_dump($workers[$i]->isTerminated(), $workers[$i]->getTerminationInfo());
  102.                         /*
  103.                         if($workers[$i]->join())
  104.                         {
  105.                                 //var_dump($workers[$i]->isTerminated(), $my->getTerminationInfo());
  106.                                 echo "joining $i\n";
  107.                                 unset($workers[$i]);
  108.                                
  109.                         }
  110.                         */
  111.         }
  112.        
  113.  
  114. }
  115.  
  116. ?>


Мне нужно реализовать таймаут у потока, если программа, которую он выполняет зависла, например более чем на 60 секунд. Как это сделать? Еще не понятно почему, у меня $workers[$i]->kill(); возвращает false. В чем может быть проблема? Спасибо
freelsd Отправлено: 25 Марта, 2015 - 08:21:03 • Тема: Помогите с простенькой регуляркой, пожалуйста. • Форум: Программирование на PHP

Ответов: 3
Просмотров: 304
GoDr пишет:
freelsd, что такое регексп? И что такое "если мне нужно чтобы он срабатывал"? Как сработал? Чем сработал? Что-то у тебя с русским языком проблемы..

Если тебе нужно найти строку в которой встречается abc И def, то можно попробовать так:
PHP:
скопировать код в буфер обмена
  1. $a[] = 'uihihsd abc  si hdiuash asod def hoiasdh o hasdoh ';
  2. $a[] = 'uihihsd si hdiuash asod hoiasdh def o hasdoh ';
  3. $a[] = 'uihihsd def si hdiuash asod  abc hoiasdh o hasdoh ';
  4. $a[] = 'uihihsd si abc hdiuash asod hoiasdh o hasdoh ';
  5.  
  6. foreach($a as $k => $v){
  7.     $b = preg_match('#(abc.*?def|def.*?abc)#is', $v, $m);
  8.     if($b){
  9.         echo 'Строка ['.$k.'] - ДА<br>';
  10.     }else{
  11.         echo 'Строка ['.$k.'] - НЕТ<br>';
  12.     }
  13. }

(Добавление)
LIME, человек хочет регуляркой Закатив глазки хотя делать логическое И в регулярке не самое благодарное дело


Похоже на то что нужно, попробую, спасибо.
freelsd Отправлено: 25 Марта, 2015 - 07:37:46 • Тема: Помогите с простенькой регуляркой, пожалуйста. • Форум: Программирование на PHP

Ответов: 3
Просмотров: 304
Я вот не могу понять, как нужно составить регексп, если мне нужно чтобы он срабатывал, когда в строке встречаются две последовательности abc и def, неважно в каком порядке. Подскажите, плиз.
freelsd Отправлено: 16 Марта, 2015 - 16:38:59 • Тема: Шаблон для поиска в исходника СИ-подобных функций. Какой? • Форум: Программирование на PHP

Ответов: 13
Просмотров: 686
DeepVarvar пишет:
Выше же ответил.


OrmaJever пишет:
готовое решение парнсинга функций С/C++ ? Я думаю очень вряд ли! Если вам нужно отслеживать изменения то сказал сказал DeepVarvar git. Создайте локальный репозиторий и заливайте изменения туда, но по-моему git это лучший вариант в данной ситуации, парсить C++ синтаксис это полный бред.

Хорошо, спасибо.
freelsd Отправлено: 16 Марта, 2015 - 16:17:44 • Тема: Шаблон для поиска в исходника СИ-подобных функций. Какой? • Форум: Программирование на PHP

Ответов: 13
Просмотров: 686
OrmaJever пишет:
freelsd пишет:
проекта на С/С++

Поверьте мне функции на С++ вы вряд ли распарсите регулярками. Там очень обширный синтаксис. Там могут быть и шаблоны
CODE (htmlphp):
скопировать код в буфер обмена
  1. int func< type >( type A ) ...

в методах классов могут быть операторы
CODE (htmlphp):
скопировать код в буфер обмена
  1. int operator()(int a) ...

так же шаблоны могут быть и в параметрах + неймспейсы
CODE (htmlphp):
скопировать код в буфер обмена
  1. int func( myClass< std::string> str ) ...

Про лямбды я вообще молчу. Гиблое это дело парсить С++ синтаксис Подмигивание

Ну гиблое не гиблое, может есть решения какие-то готовые?
freelsd Отправлено: 16 Марта, 2015 - 14:31:38 • Тема: Шаблон для поиска в исходника СИ-подобных функций. Какой? • Форум: Программирование на PHP

Ответов: 13
Просмотров: 686
DeepVarvar пишет:
git, tig, svn, trac, redmine... не знакомо?

Нужно локальное решение. Да и со всеми особенностями git и svn я не знаком. А про остальные системы не слышал, лол. Но суть не в этом, а в том что нужно написать скрипт для такой задачи. Верным путем является, значит, индексирование скобок?
freelsd Отправлено: 16 Марта, 2015 - 14:13:49 • Тема: Шаблон для поиска в исходника СИ-подобных функций. Какой? • Форум: Программирование на PHP

Ответов: 13
Просмотров: 686
DeepVarvar пишет:
Тащить жадным, и сматченные куски передавать ниже по цепочке рекурсивно. Но это тоже все Г, самый правильный путь - перебирать посимвольно, индексируя кол-во открытых-закрытых скобок и пр..

А вообще, нахрена? Не понял

Например есть несколько версий проекта на С/С++. Нужно показать какие функции менялись, и что в них изменилось.

Страниц (8): « 1 2 3 4 5 6 [7] 8 »
Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB