PHP 文件名编号

PHP File name numbering

我觉得这个问题会很蠢,但是我找不到答案,而且我是PHP的新手。

问题是我正在使用 PHPWord,我试图跳过 MySQL 仅使用 PHP 和 PHPWord 来执行 delivery[ID].docx 文件,其中包含ID,即每创建一个文件就加+1 e.x.;

我当前的代码 load/save 如下所示:

require_once 'PHPWord.php';
$PHPWord = new PHPWord();
$document = $PHPWord->loadTemplate('./dfiles/delivery_template.docx');

     $nm = $_POST['NAME_' . 1];
     $qt = $_POST['QUANTITY_' . 1];
     $iid = $_POST['ID_' . 1];
     $t = 1000;
     $wg = $qt * $t;
     $document->setValue('pn1', $nm);
     $document->setValue('kg1', $wg);

$numid = 1;
$document->save('Delivery G'.$numid++.'-'.date(m).'-'.date(Y).'.docx', './dfiles/');

而且我知道 $numid 会将值设置为 1,此时代码将再次触发此功能,所以请帮忙,我该怎么做,没有 MySQL?

附加信息:此代码将由 HTML 提交 函数触发。

你可以用不同的方式来做:

  1. 生成一些随机数并追加到文件中,如果文件存在则重新生成随机数并追加到文件中,一直重复这个过程直到没有找到重复的文件。

  2. 您可以添加日期和时间,使其具有唯一性和可读性。(例如:Delivery G 10-8-2015[15.12.99].doc)

  3. 生成哈希码,并追加。

PHP 变量仅在 PHP 为 运行ning 时有效 - 即生成对请求的响应所需的时间。如果您想引用在先前执行中创建或修改的值,则需要将其存储在某个地方。您可以只使用一个文件:

function getNextNumber() 
{
   $number=file_get_contents("/tmp/counter");
   file_put_contents("/tmp/counter", ++$number);
   return $number;
}

在容量非常小的服务器上,大多数情况下应该没问题。 但它不会扩展!迟早你会运行进入竞争。

这就是我们使用数据库的原因

它不一定是 MySQL(您没有提供任何不能使用 MySQL 的原因,这可能会有所帮助)还有很多其他数据库可以合适(包括不需要数据库服务器的 SQLite 运行ning)。