Проблема Php с циклом и записью в MySql Db - PullRequest
0 голосов
/ 13 марта 2011

Может быть, кто-то может помочь с этим, потому что я схожу с ума:

$action = $_GET['action'];
$items = rtrim($_POST['items'],",");
$sql = mysql_query("SELECT url, pid, log_no FROM plow WHERE id IN ($items)") or die ('Error: ' . mysql_error());

    if ($action == 'start') {
        while ($db_row = mysql_fetch_assoc($sql)) { 
            //random number for the log file name
            $random = mt_rand(1,500000);
            //log file name
            $out_file = $init_loc.'/Logs/log'.$random;
            // the command
            $command = exec("($path" . " nohup plowdown --temp-directory='$init_loc' -o '$init_loc' " . "'".$db_row['url']."' 2> " . "'$out_file' > /dev/null &);" . "echo $$;", $out); 
            exec($command, $out);
            mysql_query("UPDATE plow SET status = 'Pending...', state = 'Active', pid = '".$out[0]."', log_no = '$random' WHERE id IN ($items)") or die ('Error: ' . mysql_error());
        }
    }

Обычно, когда команда запускается, я хочу иметь возможность выполнять для каждого значения из $ db_row там действие, генерировать случайное число для журнала и сохранять каждое из них на своем месте в базе данных MySql. .

Сейчас он хранит одинаковые $ random и $ pid для каждого значения $ db_row.

Спасибо, Cristian.

1 Ответ

1 голос
/ 13 марта 2011

Когда вы обновляете все элементы, используя предложение in, последний обновит их все последним случайным числом,

' ... where id='.$row['id']

в вашем предложении обновления будет обновлять только одну строку за раз

(очевидно, вы также добавили идентификатор к своему SELECT утверждению)

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