RuKoder.ru RUKODER.ru
23 МАЙ 2011
0

Запуск php в фоновом режиме

PHP
Запуск php в фоновом режиме

Столкнулся с необходимостью запустить скрипт в фоновом режиме. Гугле подсказывает, что можно:

Если есть возможность использовать set_time_limit(), то можно попробовать применить следующую конструкцию:

<ul id="my-menu">
{php}
$sql = "SELECT cat.categories_id, cat.parent_id, cat.categories_url, cd.categories_name FROM vip_categories cat, vip_categories_description cd WHERE cat.categories_status = '1' AND cd.categories_id = cat.categories_id ORDER BY cat.parent_id, cat.categories_id";
$sql = osDBquery($sql);
while ($row = os_db_fetch_array($sql)) {
        $menu[$row['parent_id']][$row['categories_id']] = $row['categories_name'];
}
foreach ($menu[0] as $CatId => $CatName )
{
 echo "<li><a href=\"#\">".$CatName."</a>";
 if (isset($menu[$CatId])) {
        echo "<ul>";
         foreach ($menu[$CatId] as $ItemId => $ItemName)
         {
          echo "<li><a href=\"#\">".$ItemName."</a>";
          echo "<ul>";
                $query = "SELECT * FROM
                        vip_products p,
                        vip_products_description pd,
                        vip_products_to_categories p2c,
                        vip_categories c
                WHERE
                        c.categories_status='1'
                        and p.products_status = '1'
                        and p.products_id = p2c.products_id
                        and p.products_id=pd.products_id
                        and p2c.categories_id = '".$ItemId."'
                        and c.parent_id = '".$CatId."'
                ORDER by p.products_date_added";
                $query = osDBquery($query);
                while ($row1 = os_db_fetch_array($query)) {
                        echo "<li><a href=\"{$row1['products_page_url']}\">".$row1['products_name']."</a></li>";
                }  
           echo "</ul>";
          echo "</li>";
         }
        echo "</ul></li>";
 } else { echo "</li>";}
}
{/php}
</ul>

Если же нету, то можно использовать этот метод:

<ul>
    <li><a href="#">Категория 1</a>
        <ul>
            <li><a href="#">ПодКатегория 1</a>
                <ul>
                    <li><a href="url">Товар 1</a></li>
                    <li><a href="url">Товар 2</a></li>
                    <li><a href="url">Товар 3</a></li>
                </ul>
            </li>
        </ul>
    </li>
    <li><a href="#">Категория 2</a></li>
</ul>

Вот и реализация фонового режима работы. Безболезненно остановить работу скрипта можно удалив stop.txt.

Пример ниже демонстрирует как можно запустить PHP скрипт "в фоновом режиме". Запуск скрипта инициируется запросом скрипта по HTTP, но выполнение скрипта не заканчивается при обрыве соединения. Может использоваться для выполнения служебных действий на стороне сервера при невозможности использования для этих целей системной утилиты cron.


<ul id="my-menu">
{php}
$sql = "SELECT cat.categories_id, cat.parent_id, cat.categories_url, cd.categories_name FROM vip_categories cat, vip_categories_description cd WHERE cat.categories_status = '1' AND cd.categories_id = cat.categories_id ORDER BY cat.parent_id, cat.categories_id";
$sql = osDBquery($sql);
while ($row = os_db_fetch_array($sql)) {
        $menu[$row['parent_id']][$row['categories_id']] = $row['categories_name'];
}
foreach ($menu[0] as $CatId => $CatName )
{
 echo "<li><a href=\"/index.php?cat={$CatId}\">".$CatName."</a>";
 if (isset($menu[$CatId])) {
        echo "<ul>";
         foreach ($menu[$CatId] as $ItemId => $ItemName)
         {
          echo "<li><a href=\"/index.php?cat={$ItemId}\">".$ItemName."</a>";
          echo "<ul>";
                $query = "SELECT * FROM
                        vip_products p,
                        vip_products_description pd,
                        vip_products_to_categories p2c,
                        vip_categories c
                WHERE
                        c.categories_status='1'
                        and p.products_status = '1'
                        and p.products_id = p2c.products_id
                        and p.products_id=pd.products_id
                        and p2c.categories_id = '".$ItemId."'
                        and c.parent_id = '".$CatId."'
                ORDER by p.products_date_added";
                $query = osDBquery($query);
                while ($row1 = os_db_fetch_array($query)) {
                        //echo "<pre>";
                        //print_r($row1);
                        //echo "</pre>";
                        echo "<li><a href=\"/product_info.php?products_id={$row1['products_id']}\">".$row1['products_name']."</a></li>";
                }  
           echo "</ul>";
          echo "</li>";
         }
        echo "</ul></li>";
 } else { echo "</li>";}
}
{/php}
</ul>

Вот такие дела, остановился все же на CRON'e без гемморно и по моему правильней всего -)

Добавить комментарий

Категории:

  • CSS (121)
  • PHP (301)
  • JavaScript (704)

Оставить на заметку в:

© 2026 RuKoder.ru