Мне нужен PHP-скрипт для запуска в качестве службы в Windows.Как установить программу как сервис, который автоматически запускается при загрузке?
Есть ли простой способ сделать это?
Мне нужен PHP-скрипт для запуска в качестве службы в Windows.Как установить программу как сервис, который автоматически запускается при загрузке?
Есть ли простой способ сделать это?
Вы должны использовать sc.exe. Посетите http://support.microsoft.com/kb/251192 для деталей. Тогда просто использовать php.exe yourscriptname в качестве командной строки для службы для выполнения
Это, возможно, вопрос https://superuser.com/ или https://serverfault.com/
Это может предложить некоторую помощь о службе http://support.microsoft.com/kb/251192
Это было в то время как я работал с окнами, но вы могли бы настроить пакетный файл для запуска в качестве службы.
Если вы не против того, чтобы ваши руки были грязными с небольшим csharp, вот URL-адрес с приложением оболочки, которое является службой Windows. Он устанавливает таймер, который выполняет пакетный файл (т. Е. Ваш скрипт) каждые несколько секунд. Будет работать только в том случае, если ваш скрипт выполнит задачу, а затем выйдет. (Маркировка в качестве вики сообщества, так как это не мой код. Я копирую весь код здесь, в случае, связанный сайт идет мертвым в будущем.)
http://www.akchauhan.com/create-windows-service-to-schedule-php-script-execution/
Вот код, упомянутый в связанном статье.
C# для службы:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Diagnostics;
using System.Linq;
using System.ServiceProcess;
using System.Text;
using System.Timers;
namespace MyNewService
{
public partial class MyNewService : ServiceBase
{
private Timer syncTimer = null;
public MyNewService()
{
InitializeComponent();
}
protected override void OnStart(string[] args)
{
syncTimer = new Timer();
this.syncTimer.Interval = 180000;
this.syncTimer.Elapsed += new System.Timers.ElapsedEventHandler(this.syncTimer_Tick);
syncTimer.Enabled = true;
}
protected override void OnStop()
{
syncTimer.Enabled = false;
}
private void syncTimer_Tick(object sender, EventArgs e)
{
System.Diagnostics.Process.Start(@"C:\xampp\htdocs\task.bat");
}
}
}
Необходимый пакетный файл:
@echo off
cd\
set path=C:\xampp\php;
cd "C:\xampp\htdocs"
php import.php
exit
Я не думаю, что это будет работать, так как ехе должен вернуться при запуске. Вот почему у вас есть метод OnStart в программе csharp выше. –