2011-11-26 59 views
-4

我想將這個在Unix系統上運行良好的PHP腳本轉換爲Windows腳本。將基於Unix的PHP腳本轉換爲Windows的批處理文件

我不知道如何重寫它。有人能幫我嗎?

下面是腳本:

$cmd = 'nohup sudo -u '.$user.' bash -c "cd ' . 
escapeshellarg($path) . '; VVERBOSE=true QUEUE=' . 
escapeshellarg($queue) . ' APP_INCLUDE=' . 
escapeshellarg($bootstrap_path) . ' INTERVAL=' . 
escapeshellarg($interval) . ' CAKE=' . 
escapeshellarg(CAKE) . ' COUNT=' . $count . 
' php ./resque.php'; 
$cmd .= ' > '. escapeshellarg($log_path).' 2>&1" >/dev/null 2>&1 &'; 

passthru($cmd); 
+6

這不是一個bash腳本!它看起來更像perl或PHP。 –

+1

另外,一個更好的想法是描述你想做什麼(以及你自己試圖解決這個問題),而不是讓我們嘗試解碼你的腳本 –

回答

2

中繼是在PHP的方法見http://php.net/manual/en/function.passthru.php

你知道劇本做什麼?也許反向工程到windows批處理腳本?

  • 執行命令以其他用戶身份
  • 改變當前目錄
  • 設置環境變量
  • 調用:

    從外觀上來看,該腳本從一個* nix的系統,它來了直接從PHP解釋器獲取PHP腳本並將日誌轉儲到文件中,並將管道傳遞到/ dev/null

這個腳本是imo,不可能「隱藏」到Windows批處理腳本(因爲Windows!= POSIX),所以你需要重寫它。

+0

謝謝比爾,它正是我所知道的,這個PHP腳本在unix系統上使用,爲什麼它使用像sudo,bash等命令...我想重寫它,但我真的不知道該怎麼做,你能幫我或給我一種方法學習如何?謝謝 –

+0

對於初學者來說,唯一不能移植的命令是nohup(?)和windows中的sudo。其餘的應該相對容易。 - cd(linux),cd(windows) - http://support.microsoft.com/kb/110930重定向stdout和err - set(windows)用於設置變量。 爲什麼你需要將它轉換爲Windows? – Bill

+0

因爲我在當地的窗口工作。我只是試圖得到它與cygwin的工作,我已經刪除了「nohup sudo」,但它仍然是一個錯誤。這裏是$ cmd的內容:bash -c「cd」D:\ WebServer \ www \ MyProject \ app \ Plugin \ Resque \ Vendor \ php-resque \「; VVERBOSE = true QUEUE =」default「APP_INCLUDE =」D: \ WebServer \ www \ MyProject \ lib \ Cake \「COUNT = 1 php ./resque.php」INTERVAL =「5」CAKE =「D:\ WebServer \ www \ MyProject \ app \ Plugin \ Resque \ Lib \ ResqueBootstrap.php >「D:\ WebServer \ www \ MyProject \ app \ tmp \ logs \ php-resque-worker.log」2>&1「>/dev/null 2>&1& –

相關問題