1
0
Fork 0

Make sure we properly usleep() on windows rmdir/unlink

usleep() returns void, therefore the previous code didn't work
pull/7978/head
Markus Staab 2019-02-12 11:54:23 +01:00
parent 4d26198dde
commit fc2c445c06
1 changed files with 16 additions and 4 deletions

View File

@ -199,9 +199,15 @@ class Filesystem
*/
public function unlink($path)
{
if (!@$this->unlinkImplementation($path)) {
$unlinked = @$this->unlinkImplementation($path);
if (!$unlinked) {
// retry after a bit on windows since it tends to be touchy with mass removals
if (!Platform::isWindows() || (usleep(350000) && !@$this->unlinkImplementation($path))) {
if (Platform::isWindows()) {
usleep(350000);
$unlinked = @$this->unlinkImplementation($path);
}
if (!$unlinked) {
$error = error_get_last();
$message = 'Could not delete '.$path.': ' . @$error['message'];
if (Platform::isWindows()) {
@ -224,9 +230,15 @@ class Filesystem
*/
public function rmdir($path)
{
if (!@rmdir($path)) {
$deleted = @rmdir($path);
if (!$deleted) {
// retry after a bit on windows since it tends to be touchy with mass removals
if (!Platform::isWindows() || (usleep(350000) && !@rmdir($path))) {
if (Platform::isWindows()) {
usleep(350000);
$deleted = !@rmdir($path);
}
if (!$deleted) {
$error = error_get_last();
$message = 'Could not delete '.$path.': ' . @$error['message'];
if (Platform::isWindows()) {