Master-X
Регистрация
|
Вход
Форум
|
Новости
|
Статьи
Главная
»
Форум
»
Программинг, Скрипты, Софт, Сервисы
»
Тема:
Можно сделать инклюд файла который запущен? php
Новая тема
Ответить
цитата
25/03/09 в 13:30
Lamagro
сабж
скрипт 1.php запущен и работает...
могу я из 2.php сделать инклюд 1.php и запустить?
То есть получить паралельный процесс?
цитата
25/03/09 в 13:37
Some Milk
Именно как "инклюд" - нет.
Но в принципе можешь сделать 1.php исполнимым файлом (#!/usr/local/bin/php в первой строчке и права на выполнение) и запустить через system или shell_exec в фоне, используя "&" в конце команды. Правда, остается вероятность, что как только 2.php завершится, этот процесс прибьется тоже. Так что лучше бы узнать исходную задачу, может есть более простой способ ее решить.
цитата
25/03/09 в 13:41
Lamagro
хм спасибо
а если первый файл не запускать, а скажем в остальные 2 файла инклюдить первый и стартовать каждый по отдельности?
цитата
25/03/09 в 13:49
Some Milk
Lamagro писал:
а если первый файл не запускать, а скажем в остальные 2 файла инклюдить и стартовать каждый по отдельности?
Я плохо понял этот вопрос, но в общем суть в том, что в пхп нет возможности выполнять что-то параллельно. Если тебе нужно сделать несколько вещей сразу, то это нужно организовывать как отдельные процессы. то есть можно в 1.php запустить кучу копий 2.php и ждать, пока они все не отработают. Я в свое время даже делал роботов на этом принципе - один скрипт в цикле крутился и смотрел, чтобы постоянно в фоне работало определенное количество скриптов. И да, при этом появляются нюансы с одновременным доступом к данным, это тоже довольно неприятно, но решаемо.
цитата
25/03/09 в 14:01
Lamagro
брр
вопрос такой
есть файл со скриптом 1.php
есть еще 2 файла 2.php и 3.php в которых прописано <?include("1.php");?>
если я одновременно запущу второй и третий файлы они будут работать корректно? это ведь фактически разные процессы?
цитата
25/03/09 в 14:05
Some Milk
А, в таком ключе. Да, будут работать корректно. Если у тебя есть сайт, где пятьсот скриптов, и в каждом из них делается <? include "config.php"; ?> ты же не будешь говорить, что они все не могут работать одновременно?
цитата
25/03/09 в 14:08
Lamagro
ну кстати да логично
а если 1.php в данный момент тоже запущен уже нельзя?
цитата
25/03/09 в 14:10
Stek
Корректность работы будет зависеть от того, что у тебя в 1.php
цитата
25/03/09 в 14:12
Some Milk
Нюансы правда есть.
Например, если включаемый файл использует сессии, то одновременной работы от одного пользователя сходу не получится, потому что механизм сессии будет блокировать выполнение других скриптов, пока не завершится первый. Это лечится принудительным закрытием сессии через session_write_close(), как только все нужные операции по авторизации и т.д. сделаны.
Или к примеру если у тебя идет работа с SQL. С блокировками таблиц ты рискуешь, что одновременной работы не будет, без блокировки - что похерятся данные, когда один скрипт пишет в базу, а второй пишет поверх.
Последний раз редактировалось: Some Milk (
25/03/09 в 14:14
), всего редактировалось 1 раз
цитата
25/03/09 в 14:14
Some Milk
Lamagro писал:
ну кстати да логично
а если 1.php в данный момент тоже запущен уже нельзя?
Можно (с оговорками, см. нюансы выше).
Если 1.php не использует никаких общих ресурсов (база, сессии, доступ к одному общему файлу) - то никаких препятствий не вижу.
цитата
25/03/09 в 14:37
Lamagro
скрипт берет из одной базы, но пишет в разные, сессии не используются, общие файлы тоже..
всем спасибо!
Новая тема
Ответить
Эта страница в полной версии