YAML file locking and reading in Windows vs *nix

My plugin Count Views works fine in *nix environments, but it doesn’t work in Windows.

The problem is these lines here:

        // Open data file
        $datafh = File::instance($path);
        $datafh->lock();
        $data = Yaml::parse($datafh->content());
        if ($data === null) {
            $data = array();
        }

No matter what, $datafh->content() is returning null on Windows, even though it loaded the file fine on lines 63-66. The only difference is the file locking.

I added an if/then and indeed the file is getting locked. So what do I have to do to read the file now? Why is it different on Windows?

And I can confirm that if I remove the lock() line, everything works as expected.

Any help appreciated. Thanks!

I can confirm the issue on Windows using Xampp.
It doesn’t occur when using Windows Subsystem for Linux

This doesn’t seem to be an issue in your plugin, but rather at a lower level. Perhaps logging an issue at RocketTheme would be the right way to go.

1 Like

Did you manage to fix this issue? What is your workaround?

There is also a file locking API here, but I have not yet tested it: