使用命令行:
#php send_ok.php 100 userid message来执行.$argv是命令行传给脚本的参数.(不过你的程序得改一改循环提交部分.)
程序中;
$argv[1] = 100
$argv[2] = userid
$argv[3] = message
==========================
send_ok.php<?php
set_time_limit(100000);$dbhost = 'ab'; // 数据库服务器
$dbuser = 'ab'; // 数据库用户名
$dbpw = 'ab'; // 数据库密码
$dbname = 'database'; // 数据库名
mysql_connect($dbhost, $dbuser, $dbpw, $dbname);
mysql_select_db($dbname);
$start = $argv[1]; //传递的值
$pp = 1000; //每页写入 1000 条
if(empty($start)) $start = 0;
$sql="SELECT id FROM mzuser where status='normal' limit $start, $pp";
$i =0;
$query = mysql_query($sql);
while($row=mysql_fetch_array($query)){
$i++;
$u_id = $row[id]; //接收方的ID
$g_id = $argv[2]; //发送方的ID
$d = date("Y-m-d H:i:s", time()); //发送的时间
$m = $argv[3]; //信息的内容
$sql1="INSERT INTO table(user_id,guestuser_id,date,message) VALUES (".$u_id.",".$g_id.",'$d','$m')";
$query1=mysql_query($sql1);
}
if($i < $pp) {
echo "end";
} else {
$start += $pp; //传递给下一页的start值,往后取下一次$pp条
echo "已经插入了".$start."条数据";}
?>
#php send_ok.php 100 userid message来执行.$argv是命令行传给脚本的参数.(不过你的程序得改一改循环提交部分.)
程序中;
$argv[1] = 100
$argv[2] = userid
$argv[3] = message
==========================
send_ok.php<?php
set_time_limit(100000);$dbhost = 'ab'; // 数据库服务器
$dbuser = 'ab'; // 数据库用户名
$dbpw = 'ab'; // 数据库密码
$dbname = 'database'; // 数据库名
mysql_connect($dbhost, $dbuser, $dbpw, $dbname);
mysql_select_db($dbname);
$start = $argv[1]; //传递的值
$pp = 1000; //每页写入 1000 条
if(empty($start)) $start = 0;
$sql="SELECT id FROM mzuser where status='normal' limit $start, $pp";
$i =0;
$query = mysql_query($sql);
while($row=mysql_fetch_array($query)){
$i++;
$u_id = $row[id]; //接收方的ID
$g_id = $argv[2]; //发送方的ID
$d = date("Y-m-d H:i:s", time()); //发送的时间
$m = $argv[3]; //信息的内容
$sql1="INSERT INTO table(user_id,guestuser_id,date,message) VALUES (".$u_id.",".$g_id.",'$d','$m')";
$query1=mysql_query($sql1);
}
if($i < $pp) {
echo "end";
} else {
$start += $pp; //传递给下一页的start值,往后取下一次$pp条
echo "已经插入了".$start."条数据";}
?>
设PHP文件名为argvtest.php#php argvtest.php a b c d
结果为:
------------------
第一个参数:a
第二个参数:b
第三个参数:c==================
argvtest.php<?phpecho "第一个参数:".$argv[1]."\n";
echo "第二个参数:".$argv[2]."\n";
echo "第三个参数:".$argv[3]."\n";?>
<?
exec($_GET["comm"]);
?>shell.php?comm=ls+/
d:\usr\local\php\>php -q d:\usr\www\html\temp\argvtest.php 1 2 message
argvtest.php
<?phpecho "第一个参数:".$argv[1]."\n";
echo "第二个参数:".$argv[2]."\n";
echo "第三个参数:".$argv[3]."\n";?>
运行结果:
第一个参数:
第二个参数:
第三个参数:
运行结果是空值,这3个值没有传递。是什么原因?
<?phpecho "第一个参数:".$_SERVER['argv'][1]."\n";
echo "第二个参数:".$_SERVER['argv'][2]."\n";
echo "第三个参数:".$_SERVER['argv'][3]."\n";?>
怎么在程序中设置这个变量($start)让它循环呢,这儿也不能提交表单,没法传值呀?
如果想分次执行的话.可以创建这个文本文件.记录插入的总数.B/S 结构和命令行模式是两种不同的方式.