目录自定义函数
PHP中并不提供查询目录大小、复制目录、删除有文件的目录的函数,我们需要自己编写
这个函数只要传递一个url,就能递归查询目录中的文件大小,从而统计出目录大小
<span style="color: #008080;"> 1</span> <span style="color: #000000;">php</span><span style="color: #008080;"> 2</span> <span style="color: #0000ff;">function</span> dirSize(<span style="color: #800080;">$dir</span><span style="color: #000000;">){</span><span style="color: #008080;"> 3</span> <span style="color: #800080;">$dirsize</span> = 0<span style="color: #000000;">;</span><span style="color: #008080;"> 4</span> <span style="color: #800080;">$url</span> = <span style="color: #008080;">opendir</span>(<span style="color: #800080;">$dir</span><span style="color: #000000;">);</span><span style="color: #008080;"> 5</span> <span style="color: #0000ff;">while</span>(<span style="color: #800080;">$filename</span> = <span style="color: #008080;">readdir</span>(<span style="color: #800080;">$url</span><span style="color: #000000;">)){</span><span style="color: #008080;"> 6</span> <span style="color: #800080;">$file</span> = <span style="color: #800080;">$dir</span>.'/'.<span style="color: #800080;">$filename</span><span style="color: #000000;">;</span><span style="color: #008080;"> 7</span> <span style="color: #0000ff;">if</span>(!(<span style="color: #800080;">$filename</span>=='.' || <span style="color: #800080;">$filename</span>=='..'<span style="color: #000000;">)){</span><span style="color: #008080;"> 8</span> <span style="color: #0000ff;">if</span>(<span style="color: #008080;">is_dir</span>(<span style="color: #800080;">$file</span><span style="color: #000000;">)){</span><span style="color: #008080;"> 9</span> <span style="color: #800080;">$dirsize</span> += dirSize(<span style="color: #800080;">$file</span><span style="color: #000000;">);</span><span style="color: #008080;">10</span> }<span style="color: #0000ff;">else</span><span style="color: #000000;">{</span><span style="color: #008080;">11</span> <span style="color: #800080;">$dirsize</span> += <span style="color: #008080;">filesize</span>(<span style="color: #800080;">$file</span><span style="color: #000000;">);</span><span style="color: #008080;">12</span> <span style="color: #000000;"> }</span><span style="color: #008080;">13</span> <span style="color: #000000;"> }</span><span style="color: #008080;">14</span> <span style="color: #000000;"> }</span><span style="color: #008080;">15</span> <span style="color: #008080;">closedir</span>(<span style="color: #800080;">$url</span><span style="color: #000000;">);</span><span style="color: #008080;">16</span> <span style="color: #0000ff;">return</span> <span style="color: #800080;">$dirsize</span><span style="color: #000000;">;</span><span style="color: #008080;">17</span> }
这个函数需要传递两个url,分别是旧目录和新目录,就能复制该目录及文件
<span style="color: #008080;"> 1</span> <span style="color: #000000;">php</span><span style="color: #008080;"> 2</span> <span style="color: #0000ff;">function</span> copyDir(<span style="color: #800080;">$dirSrc</span>,<span style="color: #800080;">$dirTo</span><span style="color: #000000;">){</span><span style="color: #008080;"> 3</span> <span style="color: #0000ff;">if</span>(<span style="color: #008080;">is_file</span>(<span style="color: #800080;">$dirTo</span><span style="color: #000000;">))</span><span style="color: #008080;"> 4</span> <span style="color: #000000;"> {</span><span style="color: #008080;"> 5</span> <span style="color: #0000ff;">echo</span> '目标不是目录不能创建!'<span style="color: #000000;">;</span><span style="color: #008080;"> 6</span> <span style="color: #0000ff;">return</span><span style="color: #000000;">;</span><span style="color: #008080;"> 7</span> <span style="color: #000000;"> }</span><span style="color: #008080;"> 8</span> <span style="color: #0000ff;">if</span>(!<span style="color: #008080;">file_exists</span>(<span style="color: #800080;">$dirTo</span><span style="color: #000000;">))</span><span style="color: #008080;"> 9</span> <span style="color: #000000;"> {</span><span style="color: #008080;">10</span> <span style="color: #008080;">mkdir</span>(<span style="color: #800080;">$dirTo</span><span style="color: #000000;">);</span><span style="color: #008080;">11</span> <span style="color: #000000;"> }</span><span style="color: #008080;">12</span> <span style="color: #800080;">$dir_handle</span> = @<span style="color: #008080;">opendir</span>(<span style="color: #800080;">$dirSrc</span><span style="color: #000000;">);</span><span style="color: #008080;">13</span> <span style="color: #0000ff;">if</span>(<span style="color: #800080;">$dir_handle</span><span style="color: #000000;">)</span><span style="color: #008080;">14</span> <span style="color: #000000;"> {</span><span style="color: #008080;">15</span> <span style="color: #0000ff;">while</span>(<span style="color: #800080;">$filename</span> = <span style="color: #008080;">readdir</span>(<span style="color: #800080;">$dir_handle</span><span style="color: #000000;">))</span><span style="color: #008080;">16</span> <span style="color: #000000;"> {</span><span style="color: #008080;">17</span> <span style="color: #0000ff;">if</span>(<span style="color: #800080;">$filename</span>!="." && <span style="color: #800080;">$filename</span>!=".."<span style="color: #000000;">)</span><span style="color: #008080;">18</span> <span style="color: #000000;"> {</span><span style="color: #008080;">19</span> <span style="color: #800080;">$subSrcFile</span> = <span style="color: #800080;">$dirSrc</span> . "\\".<span style="color: #800080;">$filename</span><span style="color: #000000;">;</span><span style="color: #008080;">20</span> <span style="color: #800080;">$subToFile</span> = <span style="color: #800080;">$dirTo</span> . "\\".<span style="color: #800080;">$filename</span><span style="color: #000000;">;</span><span style="color: #008080;">21</span> <span style="color: #008080;">22</span> <span style="color: #0000ff;">if</span>(<span style="color: #008080;">is_dir</span>(<span style="color: #800080;">$subSrcFile</span><span style="color: #000000;">))</span><span style="color: #008080;">23</span> <span style="color: #000000;"> {</span><span style="color: #008080;">24</span> copyDir(<span style="color: #800080;">$subSrcFile</span>, <span style="color: #800080;">$subToFile</span><span style="color: #000000;">);</span><span style="color: #008080;">25</span> <span style="color: #000000;"> }</span><span style="color: #008080;">26</span> <span style="color: #0000ff;">if</span>(<span style="color: #008080;">is_file</span>(<span style="color: #800080;">$subSrcFile</span><span style="color: #000000;">))</span><span style="color: #008080;">27</span> <span style="color: #000000;"> {</span><span style="color: #008080;">28</span> <span style="color: #008080;">copy</span>(<span style="color: #800080;">$subSrcFile</span>, <span style="color: #800080;">$subToFile</span><span style="color: #000000;">);</span><span style="color: #008080;">29</span> <span style="color: #000000;"> }</span><span style="color: #008080;">30</span> <span style="color: #000000;"> }</span><span style="color: #008080;">31</span> <span style="color: #000000;"> }</span><span style="color: #008080;">32</span> <span style="color: #008080;">closedir</span>(<span style="color: #800080;">$dir_handle</span><span style="color: #000000;">);</span><span style="color: #008080;">33</span> <span style="color: #000000;"> }</span><span style="color: #008080;">34</span> }
这个函数只要传递一个url,就能递归删除目录及子目录的文件,从而删除目录
<span style="color: #008080;"> 1</span> <span style="color: #000000;">php</span><span style="color: #008080;"> 2</span> <span style="color: #0000ff;">function</span> rmDirAll(<span style="color: #800080;">$url</span><span style="color: #000000;">){</span><span style="color: #008080;"> 3</span> <span style="color: #008000;">//</span><span style="color: #008000;">检测要打开目录是否存在</span><span style="color: #008080;"> 4</span> <span style="color: #0000ff;">if</span>(!<span style="color: #800080;">$dir</span>=@<span style="color: #008080;">opendir</span>(<span style="color: #800080;">$url</span><span style="color: #000000;">)){</span><span style="color: #008080;"> 5</span> <span style="color: #0000ff;">return</span> <span style="color: #0000ff;">false</span><span style="color: #000000;">;</span><span style="color: #008080;"> 6</span> <span style="color: #000000;"> }</span><span style="color: #008080;"> 7</span> <span style="color: #0000ff;">while</span>(<span style="color: #0000ff;">false</span> !==(<span style="color: #800080;">$file</span>=<span style="color: #008080;">readdir</span>(<span style="color: #800080;">$dir</span><span style="color: #000000;">))){</span><span style="color: #008080;"> 8</span> <span style="color: #008000;">//</span><span style="color: #008000;">排除当前目录与父级目录</span><span style="color: #008080;"> 9</span> <span style="color: #0000ff;">if</span>(<span style="color: #800080;">$file</span>!=="."&&<span style="color: #800080;">$file</span>!==".."<span style="color: #000000;">){</span><span style="color: #008080;">10</span> <span style="color: #800080;">$file</span>=<span style="color: #800080;">$url</span> .'/'. <span style="color: #800080;">$file</span><span style="color: #000000;">;</span><span style="color: #008080;">11</span> <span style="color: #008000;">//</span><span style="color: #008000;">递归删除目录</span><span style="color: #008080;">12</span> <span style="color: #0000ff;">if</span>(<span style="color: #008080;">is_dir</span>(<span style="color: #800080;">$file</span><span style="color: #000000;">)){</span><span style="color: #008080;">13</span> rmDirAll(<span style="color: #800080;">$file</span><span style="color: #000000;">);</span><span style="color: #008080;">14</span> }<span style="color: #0000ff;">else</span><span style="color: #000000;">{</span><span style="color: #008080;">15</span> <span style="color: #0000ff;">if</span>(@<span style="color: #008080;">unlink</span>(<span style="color: #800080;">$file</span><span style="color: #000000;">)){</span><span style="color: #008080;">16</span> <span style="color: #0000ff;">continue</span><span style="color: #000000;">;</span><span style="color: #008080;">17</span> }<span style="color: #0000ff;">else</span><span style="color: #000000;">{</span><span style="color: #008080;">18</span> <span style="color: #0000ff;">return</span> <span style="color: #0000ff;">false</span><span style="color: #000000;">;</span><span style="color: #008080;">19</span> <span style="color: #000000;"> }</span><span style="color: #008080;">20</span> <span style="color: #000000;"> }</span><span style="color: #008080;">21</span> <span style="color: #000000;"> }</span><span style="color: #008080;">22</span> <span style="color: #0000ff;">if</span>(@<span style="color: #008080;">rmdir</span>(<span style="color: #800080;">$url</span><span style="color: #000000;">)){</span><span style="color: #008080;">23</span> <span style="color: #0000ff;">return</span> <span style="color: #0000ff;">true</span><span style="color: #000000;">;</span><span style="color: #008080;">24</span> }<span style="color: #0000ff;">else</span><span style="color: #000000;">{</span><span style="color: #008080;">25</span> <span style="color: #0000ff;">return</span> <span style="color: #0000ff;">false</span><span style="color: #000000;">;</span><span style="color: #008080;">26</span> <span style="color: #000000;"> }</span><span style="color: #008080;">27</span> <span style="color: #000000;"> }</span><span style="color: #008080;">28</span> }

TheSecretTokeEpingAphp-PowerEdwebSiterUnningSmoothlyShyunderHeavyLoadInVolvOLVOLVOLDEVERSALKEYSTRATICES:1)emplactopCodeCachingWithOpcachingWithOpCacheToreCescriptexecution Time,2)使用atabasequercachingCachingCachingWithRedataBasEndataBaseLeSendataBaseLoad,3)

你应该关心DependencyInjection(DI),因为它能让你的代码更清晰、更易维护。1)DI通过解耦类,使其更模块化,2)提高了测试的便捷性和代码的灵活性,3)使用DI容器可以管理复杂的依赖关系,但要注意性能影响和循环依赖问题,4)最佳实践是依赖于抽象接口,实现松散耦合。

是的,优化papplicationispossibleandessential.1)empartcachingingcachingusedapcutorediucedsatabaseload.2)优化的atabaseswithexing,高效Quereteries,and ConconnectionPooling.3)EnhanceCodeWithBuilt-unctions,避免使用,避免使用ingglobalalairaiables,并避免使用

theKeyStrategiestosiminificallyBoostphpapplicationPermenCeare:1)useOpCodeCachingLikeLikeLikeLikeLikeCacheToreDuceExecutiontime,2)优化AtabaseInteractionswithPreparedStateTemtStatementStatementSandProperIndexing,3)配置

aphpdepentioncontiveContainerIsatoolThatManagesClassDeptions,增强codemodocultion,可验证性和Maintainability.itactsasaceCentralHubForeatingingIndections,因此reducingTightCightTightCoupOulplingIndeSingantInting。

选择DependencyInjection(DI)用于大型应用,ServiceLocator适合小型项目或原型。1)DI通过构造函数注入依赖,提高代码的测试性和模块化。2)ServiceLocator通过中心注册获取服务,方便但可能导致代码耦合度增加。

phpapplicationscanbeoptimizedForsPeedAndeffificeby:1)启用cacheInphp.ini,2)使用preparedStatatementSwithPdoforDatabasequesies,3)3)替换loopswitharray_filtaray_filteraray_maparray_mapfordataprocrocessing,4)conformentnginxasaseproxy,5)

phpemailvalidation invoLvesthreesteps:1)格式化进行regulareXpressecthemailFormat; 2)dnsvalidationtoshethedomainhasavalidmxrecord; 3)


热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

Video Face Swap
使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

热工具

MinGW - 适用于 Windows 的极简 GNU
这个项目正在迁移到osdn.net/projects/mingw的过程中,你可以继续在那里关注我们。MinGW:GNU编译器集合(GCC)的本地Windows移植版本,可自由分发的导入库和用于构建本地Windows应用程序的头文件;包括对MSVC运行时的扩展,以支持C99功能。MinGW的所有软件都可以在64位Windows平台上运行。

安全考试浏览器
Safe Exam Browser是一个安全的浏览器环境,用于安全地进行在线考试。该软件将任何计算机变成一个安全的工作站。它控制对任何实用工具的访问,并防止学生使用未经授权的资源。

DVWA
Damn Vulnerable Web App (DVWA) 是一个PHP/MySQL的Web应用程序,非常容易受到攻击。它的主要目标是成为安全专业人员在合法环境中测试自己的技能和工具的辅助工具,帮助Web开发人员更好地理解保护Web应用程序的过程,并帮助教师/学生在课堂环境中教授/学习Web应用程序安全。DVWA的目标是通过简单直接的界面练习一些最常见的Web漏洞,难度各不相同。请注意,该软件中

Dreamweaver Mac版
视觉化网页开发工具

EditPlus 中文破解版
体积小,语法高亮,不支持代码提示功能