Вопрос новичка - вызов нескольких скриптов .sql в файл PHP - PullRequest
1 голос
/ 22 мая 2009

У меня есть файл PHP, который выполняет несколько сценариев SQL. Я считаю, что первые два сценария выполняются, но последние два, кажется, никогда не завершаются. Я тестировал последние два скрипта по отдельности в их собственных файлах PHP, и они работали, поэтому мне интересно, не связано ли это с количеством вызовов exec (), которые я выполняю в своем скрипте PHP. Какие-либо предложения? Вот оригинальный скрипт:

<?php
session_start();

$host = "localhost"; 
$user = "user"; 
$pass = "pass"; 
$database = "database"; 

$linkID = mysql_connect($host, $user, $pass) or die("Could not connect to host."); 
mysql_select_db($database, $linkID) or die("Could not find database."); 


$query = sprintf("SELECT dbName FROM users where userName='%s'",
   $_SESSION['MM_Username']); 
$resultID = mysql_query($query) or die("Data not found."); 

list($dbName)= mysql_fetch_row($resultID);

exec("mysql -u user -ppassword ".$dbName." < ../scripts/makeTblFinalAnalysis.sql"); 
exec("mysql -u user -ppassword ".$dbName." < ../scripts/tblFinalDetailed.sql");
exec("mysql -u user -ppassword ".$dbName." < ../scripts/TblGridViews.sql");
exec("mysql -u user -ppassword ".$dbName." < ../scripts/makeTblGeo.sql");
header( 'Location: dashboards/dashboard.html' ) ;
exit;
?>

Ответы [ 3 ]

3 голосов
/ 22 мая 2009

Неужели у вас заканчивается время выполнения? Сколько времени занимает запуск сценариев?

Посмотрите set_time_limit() в документации PHP; если для запуска потребуется некоторое время, вы захотите увеличить время ожидания выполнения PHP.

1 голос
/ 22 мая 2009

"но последние два, кажется, никогда не заканчиваются." возможно из-за некоторых блокировок на первых двух сценариях третий сценарий заблокирован? Вы можете попробовать выполнить все эти 4 сценария вместе на вашем сервере sql, чтобы проверить, успешно ли он выполняется и изменения зафиксированы. Также может помочь размещение запросов sql.

0 голосов
/ 22 мая 2009

Попробуйте объединить все execs в сценарий оболочки и запустить его. Затем попробуйте запустить его в фоновом режиме. Но тогда PHP не будет ждать возврата скрипта.

exec("nohup sqlRoutines.sh > /dev/null 2>&1 &");

это отсоединит скрипт от вызывающего процесса и перенаправит stdout и stderr в никуда (или в файл журнала, если хотите ...).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...