質問編集履歴

4

2020/08/14 14:05

投稿

kyone
kyone

スコア17

test CHANGED
File without changes
test CHANGED
@@ -118,7 +118,7 @@
118
118
 
119
119
  ![1回目の重複](8bcda928b94474c792cb3ab17febd23a.png)
120
120
 
121
- その次は、131699(≒65535×2)ファイルで、同様に重複する値を取得します。
121
+ その次は、131069(≒65535×2)ファイルで、同様に重複する値を取得します。
122
122
 
123
123
  ![2回目の重複](bebe9887bad5f54a44418287d4c376d9.png)
124
124
 

3

2020/08/14 14:05

投稿

kyone
kyone

スコア17

test CHANGED
File without changes
test CHANGED
@@ -118,7 +118,7 @@
118
118
 
119
119
  ![1回目の重複](8bcda928b94474c792cb3ab17febd23a.png)
120
120
 
121
- その次は、131701(≒65535×2)ファイルで、同様に重複する値を取得します。
121
+ その次は、131699(≒65535×2)ファイルで、同様に重複する値を取得します。
122
122
 
123
123
  ![2回目の重複](bebe9887bad5f54a44418287d4c376d9.png)
124
124
 

2

情報の追加です

2020/08/14 14:04

投稿

kyone
kyone

スコア17

test CHANGED
File without changes
test CHANGED
@@ -61,3 +61,77 @@
61
61
  OS:Windows10 Pro,Home
62
62
 
63
63
  PHP version:PHP 7.2.26 (cli)、PHP7.4.9 (cli)
64
+
65
+
66
+
67
+ # 追記
68
+
69
+
70
+
71
+ みなさま、回答コメントありがとうございます。
72
+
73
+ とりあえず自分の環境でだけ起こっているのではない、ということが確認でき安心しました。
74
+
75
+
76
+
77
+ 別OS,別バージョン,別ファイルシステムについては、試す環境と時間がないので申し訳ありませんが、追加の情報はありません。
78
+
79
+
80
+
81
+ 何個目のファイルから、どのファイルが重複してカウントされるかを確認するために、ファイル名の数字の桁を10桁にそろえて確認しました。
82
+
83
+ ```PHP
84
+
85
+ <?php
86
+
87
+
88
+
89
+ $max=65535*2;
90
+
91
+
92
+
93
+ $dir='test/';
94
+
95
+ for ($i=1;$i<=$max;$i++){
96
+
97
+ file_put_contents($dir.sprintf("%010d",$i).".txt",$i);
98
+
99
+ }
100
+
101
+
102
+
103
+ $files=glob($dir."*");
104
+
105
+ echo count($files);
106
+
107
+
108
+
109
+ ?>
110
+
111
+
112
+
113
+ ```
114
+
115
+
116
+
117
+ 65533ファイルまでは問題なく動作し、65534ファイルになるとglobで取得する値が65535個となり、0000065534.txtを2回取得しています。
118
+
119
+ ![1回目の重複](8bcda928b94474c792cb3ab17febd23a.png)
120
+
121
+ その次は、131701(≒65535×2)ファイルで、同様に重複する値を取得します。
122
+
123
+ ![2回目の重複](bebe9887bad5f54a44418287d4c376d9.png)
124
+
125
+
126
+
127
+ これ以上は検証していませんが、多分、65535ファイル毎に重複する
128
+
129
+ ファイルが1つずつ増えていく感じでしょうか。
130
+
131
+
132
+
133
+ 現時点で確認している不具合はファイルの一覧を取得した際、存在しているファイルを重複して取得するだけなので、m6uさんのarray_unique()で対処可能です。
134
+
135
+
136
+
137
+ ただ、重複するのではなく、例えば取りこぼす(ファイルが存在するのに取得しない)ような不具合が仮にあったとすれば、array_unique()では対処できないので、別の方法を考える必要がありそうです。

1

2020/08/14 13:46

投稿

kyone
kyone

スコア17

test CHANGED
@@ -1 +1 @@
1
- WindowsのPHPで、ディレクトリ一覧がうまく取得できない
1
+ WindowsのPHPで、ディレクトリ内ファイル一覧がうまく取得できない
test CHANGED
File without changes