Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Потоки в php
 
 автор: Хулиган   (27.03.2008 в 10:31)   письмо автору
 
 

Как можно создать отдельный поток? Чтобы он не тормозил работу создавшего его скрипта, и отработав в асинхронном режиме, отключился?
Это в принципе возможно?
На cron ставить не хочу.
Т.е. что-то вроде setTimeout / setInterval.

   
 
 автор: Atheist_?   (27.03.2008 в 11:49)   письмо автору
 
   для: Хулиган   (27.03.2008 в 10:31)
 

В PHP есть PCNTL-функции, позволяющие создавать дочерние процессы.
http://php.net/manual/ru/ref.pcntl.php

   
 
 автор: Хулиган   (27.03.2008 в 12:32)   письмо автору
 
   для: Atheist_?   (27.03.2008 в 11:49)
 

К сожалению,
Для Windows-платформ это расширение недоступно

   
 
 автор: вит   (28.03.2008 в 16:26)   письмо автору
 
   для: Хулиган   (27.03.2008 в 12:32)
 

А конкретно какая задача стоит, что надо сделать,
первый подход состоит в использовании неблокируемых сокетов (google.com)
второй в использовании связки PHP, AJAX

   
 
 автор: Хулиган   (28.03.2008 в 17:05)   письмо автору
 
   для: вит   (28.03.2008 в 16:26)
 

Задача была сделать аналог cron. Точно такая же, как и в теме
http://softtime.ru/forum/read.php?id_forum=1&id_theme=29316

Делаю бесконечный цикл, в нем открываю url, пропарсил его с помощью xml-парсера и затолкал данные в БД. В теле цикла sleep(600).
Скрипт отрабатывает порядка 30-40 циклов, а затем перестает работать. Возможно хостер его прихлопывает. Хотя все ресурсы корректно освобождаются. Вот я и подумал, что может лучше для каждого обращения к url и его обработки использовать отдельный поток, чтобы заведомо поток отработав сгинул, освободив от себя сервер.

Аяксом делать не хочу, по сокетам ничего путного не нашёл.
Видимо придётся мучаться с cron :(

   
 
 автор: вит   (28.03.2008 в 18:46)   письмо автору
 
   для: Хулиган   (28.03.2008 в 17:05)
 

url как открываешь, функцией fsockopen, она работает в блокирующем режиме, я не буду щас описывать,
но это типичная задача, поищи в google по запросу неблокируемые сокеты найдешь кучу статей

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования