【问题标题】:What is the difference between delete() and unlink() in PHPPHP中的delete()和unlink()有什么区别
【发布时间】:2014-08-26 05:44:38
【问题描述】:

当我开始搜索“如何在 PHP 中删除文件”时,我几乎处处得到的解决方案是“unlink()”

但在 w3schools 中,我遇到了另一个名为 delete() 的函数。这是那个链接 delete() function w3schools

我开始浏览有关 delete() 但没有得到太多答案..

这个问题与我在 stackoverflow 上的问题类似。DIfferent between unlink() and delete() on unix

我真的很想知道这两个函数之间的区别和相似之处。为什么我们使用 unlink() 而不是 delete()。

【问题讨论】:

标签: php file-io unlink


【解决方案1】:

delete() 函数不存在正如 php 文档所说

这是一个虚拟的手动条目,以满足那些正在寻找的人 对于 unlink() 或 unset() 在错误的地方。

创建了一个虚拟手动条目以捕捉任何正在寻找他们认为存在但实际上并不存在的功能的人然后引导他们找到正确的功能

http://php.net/manual/en/function.delete.php

【讨论】:

    【解决方案2】:

    php 是一种类似 C 的语言 - 语法类似, PHP 中的大部分函数都来自 C 标准库(和 POSIX)

    "unlink" 是一个 C 函数。 (最初是 POSIX,但最近被 ISO 标准化为 _unlink)

    “delete”是CP/M命令,与“era”CP/M命令相同

    Unlink 是指底层的 UNIX 命令 unlink,它会删除文件的符号链接或硬链接,不一定是文件本身。只有当文件的所有链接都被删除时,文件才会被删除。

    【讨论】:

      【解决方案3】:

      根据 php.net 的说法,删除不是 php 中的功能。使用 unlink 功能删除文件。 http://php.net/manual/en/function.delete.php

      【讨论】:

        【解决方案4】:

        在 Php 中,delete() 是虚拟手动输入,以满足那些在错误位置寻找 unlink()unset() 的人。

        “虚拟条目”是“假”条目,或者在这种情况下,是实际不存在的命令条目,以便人们可以找到正确的条目。

        在此处查看更多详细信息:php.net-manual-function.delete

        【讨论】:

          【解决方案5】:

          Reference :

          删除了一个大文件,但没有发现可用空间增加或磁盘使用量减少?使用 UNIX 或其他 POSIX 操作系统?

          unlink() 不是删除文件,而是删除文件名。手册页说:“取消链接 - 删除一个名称,可能还有它所指的文件”。

          大多数情况下,一个文件只有一个名称——删除它也会删除(释放、解除分配)文件的“主体”(有一个警告,见下文)。这是简单的常见情况。

          但是,一个文件在相同或不同的目录中具有多个名称(参见 link() 函数)是完全可以的。可以这么说,所有名称都将引用文件主体并“使其保持活力”。只有当所有的名字都被删除时,文件的主体才真正被释放。

          【讨论】:

          • 还有来自内存系统的文件的链接,而不仅仅是来自文件系统的链接。当正在运行的进程打开文件时,会建立一个指向该文件的额外链接。即使所有文件系统链接都被删除,只要正在运行的进程打开该文件,该文件在磁盘上仍然完好无损。这可防止意外删除程序正在使用的文件。 这也意味着即使文件已被“删除”,僵尸进程仍可以占用一大块文件空间。为了将块返回到可用空间列表,还必须终止该进程。
          【解决方案6】:

          php中没有删除功能

          参考http://php.net/manual/en/function.delete.php

          我们必须使用unlink 来删除文件

          【讨论】:

            【解决方案7】:

            Delete 不是 PHP 的核心函数,而 unlink 是 PHP 的核心函数。

            <?php
            
            
            print "Below examples clear the diff between unlink and delete";
            
            /* There is file abc.txt in foo DIR */
            
            /*
            * Operation 1: Use delete function
            * Operation 2: Use unlink function
            *
            */
            
            $path  = $_SERVER['DOCUMENT_ROOT'] ."/foo/abc.txt";
            
            ## Uncomment to print the path
            //print "Path = ". $path;
            
            ## Uncomment to see what delete throws an output
            //delete($path) or die("I have some problem here");
            
            /* output: Here it will show ... delete is not a function */
            
            unlink($path) or die("File is not deleted. Specify some valid path till file.");
            

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 2010-11-25
              • 2010-09-13
              • 2023-03-30
              • 2023-02-20
              • 2014-05-02
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多