The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  ВХОД  слежка  RSS
"Запуск внешних программ в многопоточном процессе"
Вариант для распечатки  
Пред. тема | След. тема 
Форумы Программирование под UNIX (Public)
Изначальное сообщение [Проследить за развитием треда]

"Запуск внешних программ в многопоточном процессе" 
Сообщение от Vital emailИскать по авторуВ закладки(??) on 15-Мрт-05, 00:01  (MSK)
Прошу помощи у специалистов в области многопоточного программирования.
Задача состоит в следующем: требуется в многопоточной программе вызывать внешнюю программу, а именно, интерпретатор php-скриптов (/usr/bin/php), передать ему имя скрипта и получить результаты. Какие функции нужны для реализации этой задачи? Есть ли тут какие-нибудь особенности использования пары fork/exec? Ведь теоретически в многопоточном процессе одновременно имеется несколько точек исполнения кода, какое поведение будет у дочернего процесса? Хотелость бы увидеть примеры реализации таких задач.
Еще интересует такой вопрос. Для большей эффективности было бы неплохо оставить интерпретатор в памяти и вызывать его как фукнцию. Возможно ли такое реализовать?
  Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх

 Оглавление

Индекс форумов | Темы | Пред. тема | След. тема
Сообщения по теме

1. "Запуск внешних программ в многопоточном процессе" 
Сообщение от rgo Искать по авторуВ закладки on 15-Мрт-05, 05:25  (MSK)
pthread используешь?
1. $ info libs
там написано что после fork в дочернем процессе живёт только один поток, тот который сказал форк.

>Еще интересует такой вопрос. Для большей эффективности было бы неплохо оставить интерпретатор
>в памяти и вызывать его как фукнцию. Возможно ли такое реализовать?
>

А это не знаю. Но ежели часто вызываешь то беспокоится (на мой взгляд) на этот счёт не надо, *nix всё равно кэширует все обращения к файлам

  Удалить Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх

2. "Запуск внешних программ в многопоточном процессе" 
Сообщение от Dead Mustdie emailИскать по авторуВ закладки on 15-Мрт-05, 10:29  (MSK)
>>Еще интересует такой вопрос. Для большей эффективности было бы
>>неплохо оставить интерпретатор в памяти и вызывать его как фукнцию.
>>Возможно ли такое реализовать?
>>
>
>А это не знаю. Но ежели часто вызываешь то беспокоится (на мой
>взгляд) на этот счёт не надо, *nix всё равно кэширует все
>обращения к файлам

Мнда, зато инициализация самого интерпретатора будет происходить
столько раз, сколько запусков будет выполнено.

IMHO можно посмотреть, как реализован Апачёвый mod_php4.

  Удалить Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх

3. "Запуск внешних программ в многопоточном процессе" 
Сообщение от slavon emailИскать по авторуВ закладки(??) on 15-Мрт-05, 10:46  (MSK)
>pthread используешь?
>1. $ info libs
> там написано что после fork в дочернем процессе живёт только один
>поток, тот который сказал форк.
>
>>Еще интересует такой вопрос. Для большей эффективности было бы неплохо оставить интерпретатор
>>в памяти и вызывать его как фукнцию. Возможно ли такое реализовать?
>>
>
>А это не знаю. Но ежели часто вызываешь то беспокоится (на мой
>взгляд) на этот счёт не надо, *nix всё равно кэширует все
>обращения к файлам

Гы... изврат конечно... но теоритически скорее всего можно =) (я не проверял... так... теория)

Скомпилировать PHP (при сборке всего указать -shared -fPIC)
а потом

    void *handle;
    int (*php)(int, char **); // main () в php
    char *error;
    handle = dlopen ("php.so", RTLD_LAZY);
    if (!handle) {
        fputs (dlerror(), stderr);
        exit(1);
    }
    php = dlsym(handle, "main");
    if ((error = dlerror()) != NULL)  {
        fprintf (stderr, "%s\n", error);
        exit(1);
    }
    (*php)(...,..); // тут сэмулировать запуск майн =)
    dlclose(handle);


  Удалить Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх

4. "Запуск внешних программ в многопоточном процессе" 
Сообщение от Vital emailИскать по авторуВ закладки(??) on 15-Мрт-05, 11:54  (MSK)
О! использовать как библиотеку хорошая идея! Буду копать в этом направлении.
Спастбо за ответы!
  Удалить Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх


Архив | Удалить

Индекс форумов | Темы | Пред. тема | След. тема
Пожалуйста, прежде чем написать сообщение, ознакомьтесь с данными рекомендациями.




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру