| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > PHP: Общие вопросы > preg_match не работает с большими тестами |
| Автор: Dweep 20.3.2012, 20:43 | ||
| Я в своих программах довольно часто использую следующую кострукцию preg_match('#(<a((?!</a>).)*)dozz</a>#i', $html)) где запись ((?!</a>).)*) означает любой набор символов, кроме последовательности </a> Раньше все работало. Теперь переставил виндовс (с XP-32 перешел на XP-64 ) и переставил апач(сейчас стоит PHP Version 5.3.8, что стояло раньше - не помню). В php.ini поставил pcre.backtrack_limit=10000000 и pcre.recursion_limit=10000000 На следующих входных данных:
пример не работает. Браузер показывает что страница не найдена. Если длина входной строки менее 317 символов - то работает коректно. Если более - то тоже не работает. Что и как мне настроить/переустановить, что б заработали подобные регулярные выражения в многочисленных файлах на моем компьютере ? |
| Автор: skyboy 20.3.2012, 21:54 |
| в error.log что? |
| Автор: Dweep 21.3.2012, 10:52 |
| [Wed Mar 21 09:50:48 2012] [notice] Digest: generating secret for digest authentication ... [Wed Mar 21 09:50:48 2012] [notice] Digest: done [Wed Mar 21 09:50:48 2012] [notice] Apache/2.2.21 (Win32) mod_ssl/2.2.21 OpenSSL/1.0.0e PHP/5.3.8 configured -- resuming normal operations [Wed Mar 21 09:50:48 2012] [notice] Server built: Sep 10 2011 11:34:11 [Wed Mar 21 09:50:48 2012] [notice] Parent: Created child process 3268 [Wed Mar 21 09:50:49 2012] [notice] Digest: generating secret for digest authentication ... [Wed Mar 21 09:50:49 2012] [notice] Digest: done [Wed Mar 21 09:50:49 2012] [notice] Child 3268: Child process is running [Wed Mar 21 09:50:49 2012] [notice] Child 3268: Acquired the start mutex. [Wed Mar 21 09:50:49 2012] [notice] Child 3268: Starting 150 worker threads. [Wed Mar 21 09:50:49 2012] [notice] Child 3268: Starting thread to listen on port 443. [Wed Mar 21 09:50:49 2012] [notice] Child 3268: Starting thread to listen on port 80. [Wed Mar 21 09:50:58 2012] [notice] Parent: child process exited with status 128 -- Restarting. [Wed Mar 21 09:50:58 2012] [notice] Digest: generating secret for digest authentication ... [Wed Mar 21 09:50:58 2012] [notice] Digest: done [Wed Mar 21 09:50:58 2012] [notice] Apache/2.2.21 (Win32) mod_ssl/2.2.21 OpenSSL/1.0.0e PHP/5.3.8 configured -- resuming normal operations [Wed Mar 21 09:50:58 2012] [notice] Server built: Sep 10 2011 11:34:11 [Wed Mar 21 09:50:58 2012] [notice] Parent: Created child process 1912 [Wed Mar 21 09:50:59 2012] [notice] Digest: generating secret for digest authentication ... [Wed Mar 21 09:50:59 2012] [notice] Digest: done [Wed Mar 21 09:50:59 2012] [notice] Child 1912: Child process is running [Wed Mar 21 09:50:59 2012] [notice] Child 1912: Acquired the start mutex. [Wed Mar 21 09:50:59 2012] [notice] Child 1912: Starting 150 worker threads. [Wed Mar 21 09:50:59 2012] [notice] Child 1912: Starting thread to listen on port 443. [Wed Mar 21 09:50:59 2012] [notice] Child 1912: Starting thread to listen on port 80. [Wed Mar 21 09:50:59 2012] [notice] Parent: child process exited with status 128 -- Restarting. [Wed Mar 21 09:50:59 2012] [notice] Digest: generating secret for digest authentication ... [Wed Mar 21 09:50:59 2012] [notice] Digest: done [Wed Mar 21 09:50:59 2012] [notice] Apache/2.2.21 (Win32) mod_ssl/2.2.21 OpenSSL/1.0.0e PHP/5.3.8 configured -- resuming normal operations [Wed Mar 21 09:50:59 2012] [notice] Server built: Sep 10 2011 11:34:11 [Wed Mar 21 09:50:59 2012] [notice] Parent: Created child process 4360 [Wed Mar 21 09:51:00 2012] [notice] Digest: generating secret for digest authentication ... [Wed Mar 21 09:51:00 2012] [notice] Digest: done [Wed Mar 21 09:51:00 2012] [notice] Child 4360: Child process is running [Wed Mar 21 09:51:00 2012] [notice] Child 4360: Acquired the start mutex. [Wed Mar 21 09:51:00 2012] [notice] Child 4360: Starting 150 worker threads. [Wed Mar 21 09:51:00 2012] [notice] Child 4360: Starting thread to listen on port 443. [Wed Mar 21 09:51:00 2012] [notice] Child 4360: Starting thread to listen on port 80. |
| Автор: skyboy 21.3.2012, 11:03 |
| хм. может, это браузер так сообщает о том, что таймаут вышел? |
| Автор: Dweep 21.3.2012, 11:05 |
| От момента запуска программы и до того как браузер сообщит что страница не найдена проходит пару секунд. Тестировал на браузерах: хром, опера, фаерфокс. В моем примере естть строчка с некоректным синтаксисом: echo strlen($html);33"; , текст 33"; в ней не нужен, я его по ошибке на форум свтавил. |
| Автор: Dweep 21.3.2012, 12:06 |
| Установил xampplite-win32-1.7.3 ( до этогого стояло xampp-win32-1.7.7), заработало. Получается версии новые выпускают, а лучше не стает ( |
| Автор: skyboy 21.3.2012, 12:55 |
| странно. если какая-то ошибка, то должны быть следы в error.log… |
| Автор: ksnk 21.3.2012, 13:06 | ||
Там и есть следы. Рестарт апача неоднократный Добавлено через 29 секунд
|