Php-language-server: PHP Language Server never stops parsing files

Created on 21 Mar 2017  路  46Comments  路  Source: felixfbecker/php-language-server

I have a project which contains around 38,000 files. 8,500 of them are .php files. The PHP Language Server is stuck in a loop parsing the PHP files, and does not complete.

Watching the Output of the PHP Language Server, it appears to parse all of the files but then starts again at the first directory in the project, with no additional output other than Parsing <file>.

What can I do to help debug this problem? I've had to disable the extension on this project as it's eating up my CPU :-)

There is one error that appears in the developer console:

extensionHost.ts:282 [Extension Host] TypeError: Return value of LanguageServer\DefinitionResolver::resolveExpressionNodeToType() must implement interface phpDocumentor\Reflection\Type, null returned in /Users/john/.vscode/extensions/felixfbecker.php-intellisense-1.1.3/vendor/felixfbecker/language-server/src/DefinitionResolver.php:445
Stack trace:
#0 /Users/john/.vscode/extensions/felixfbecker.php-intellisense-1.1.3/vendor/felixfbecker/language-server/src/DefinitionResolver.php(239): LanguageServer\DefinitionResolver->resolveExpressionNodeToType(Object(PhpParser\Node\Expr\FuncCall))
#1 /Users/john/.vscode/extensions/felixfbecker.php-intellisense-1.1.3/vendor/felixfbecker/language-server/src/NodeVisitor/ReferencesCollector.php(38): LanguageServer\DefinitionResolver->resolveReferenceNodeToFqn(Object(PhpParser\Node\Expr\MethodCall))
#2 /Users/john/.vscode/extensions/felixfbecker.php-intellisense-1.1.3/vendor/nikic/php-parser/lib/PhpParser/NodeTraverser.php(108): LanguageServer\NodeVisitor\ReferencesCollector->enterNode(Object(PhpParser\Node\Expr\MethodCall))
#3 /Users/john/.vscode/extensions/felixfbecker.php-intellisense-1.1.3/vendor/nikic/php-parser/lib/PhpParser/NodeTraverser.php(171): PhpParser\NodeTraverser->traverseNode(Object(PhpParser\Node\Expr\Assign))
#4 /Users/john/.vscode/extensions/felixfbecker.php-intellisense-1.1.3/vendor/nikic/php-parser/lib/PhpParser/NodeTraverser.php(101): PhpParser\NodeTraverser->traverseArray(Array)
#5 /Users/john/.vscode/extensions/felixfbecker.php-intellisense-1.1.3/vendor/nikic/php-parser/lib/PhpParser/NodeTraverser.php(171): PhpParser\NodeTraverser->traverseNode(Object(PhpParser\Node\Stmt\Foreach_))
#6 /Users/john/.vscode/extensions/felixfbecker.php-intellisense-1.1.3/vendor/nikic/php-parser/lib/PhpParser/NodeTraverser.php(101): PhpParser\NodeTraverser->traverseArray(Array)
#7 /Users/john/.vscode/extensions/felixfbecker.php-intellisense-1.1.3/vendor/nikic/php-parser/lib/PhpParser/NodeTraverser.php(171): PhpParser\NodeTraverser->traverseNode(Object(PhpParser\Node\Stmt\ClassMethod))
#8 /Users/john/.vscode/extensions/felixfbecker.php-intellisense-1.1.3/vendor/nikic/php-parser/lib/PhpParser/NodeTraverser.php(101): PhpParser\NodeTraverser->traverseArray(Array)
#9 /Users/john/.vscode/extensions/felixfbecker.php-intellisense-1.1.3/vendor/nikic/php-parser/lib/PhpParser/NodeTraverser.php(171): PhpParser\NodeTraverser->traverseNode(Object(PhpParser\Node\Stmt\Class_))
#10 /Users/john/.vscode/extensions/felixfbecker.php-intellisense-1.1.3/vendor/nikic/php-parser/lib/PhpParser/NodeTraverser.php(101): PhpParser\NodeTraverser->traverseArray(Array)
#11 /Users/john/.vscode/extensions/felixfbecker.php-intellisense-1.1.3/vendor/nikic/php-parser/lib/PhpParser/NodeTraverser.php(171): PhpParser\NodeTraverser->traverseNode(Object(PhpParser\Node\Stmt\Namespace_))
#12 /Users/john/.vscode/extensions/felixfbecker.php-intellisense-1.1.3/vendor/nikic/php-parser/lib/PhpParser/NodeTraverser.php(85): PhpParser\NodeTraverser->traverseArray(Array)
#13 /Users/john/.vscode/extensions/felixfbecker.php-intellisense-1.1.3/vendor/felixfbecker/language-server/src/PhpDocument.php(205): PhpParser\NodeTraverser->traverse(Array)
#14 /Users/john/.vscode/extensions/felixfbecker.php-intellisense-1.1.3/vendor/felixfbecker/language-server/src/PhpDocument.php(119): LanguageServer\PhpDocument->updateContent('<?php\n\nnamespac...')
#15 /Users/john/.vscode/extensions/felixfbecker.php-intellisense-1.1.3/vendor/felixfbecker/language-server/src/PhpDocumentLoader.php(134): LanguageServer\PhpDocument->__construct('file:///sites/w...', '<?php\n\nnamespac...', Object(LanguageServer\Index\Index), Object(LanguageServer\Parser), Object(phpDocumentor\Reflection\DocBlockFactory), Object(LanguageServer\DefinitionResolver))
#16 /Users/john/.vscode/extensions/felixfbecker.php-intellisense-1.1.3/vendor/felixfbecker/language-server/src/PhpDocumentLoader.php(113): LanguageServer\PhpDocumentLoader->create('file:///sites/w...', '<?php\n\nnamespac...')
#17 [internal function]: LanguageServer\PhpDocumentLoader->LanguageServer\{closure}()
#18 /Users/john/.vscode/extensions/felixfbecker.php-intellisense-1.1.3/vendor/sabre/event/lib/coroutine.php(70): Generator->send('<?php\n\nnamespac...')
#19 /Users/john/.vscode/extensions/felixfbecker.php-intellisense-1.1.3/vendor/sabre/event/lib/Promise.php(242): Sabre\Event\{closure}('<?php\n\nnamespac...')
#20 /Users/john/.vscode/extensions/felixfbecker.php-intellisense-1.1.3/vendor/sabre/event/lib/Loop/Loop.php(261): Sabre\Event\Promise->Sabre\Event\{closure}()
#21 /Users/john/.vscode/extensions/felixfbecker.php-intellisense-1.1.3/vendor/sabre/event/lib/Loop/Loop.php(215): Sabre\Event\Loop\Loop->runNextTicks()
#22 /Users/john/.vscode/extensions/felixfbecker.php-intellisense-1.1.3/vendor/sabre/event/lib/Loop/Loop.php(194): Sabre\Event\Loop\Loop->tick(true)
#23 /Users/john/.vscode/extensions/felixfbecker.php-intellisense-1.1.3/vendor/sabre/event/lib/Loop/functions.php(122): Sabre\Event\Loop\Loop->run()
#24 /Users/john/.vscode/extensions/felixfbecker.php-intellisense-1.1.3/vendor/felixfbecker/language-server/bin/php-language-server.php(102): Sabre\Event\Loop\run()
#25 {main}d.logExtensionHostMessage @ extensionHost.ts:282(anonymous function) @ extensionHost.ts:137emitTwo @ events.js:106emit @ events.js:191process.nextTick @ internal/child_process.js:744_combinedTickCallback @ internal/process/next_tick.js:67_tickCallback @ internal/process/next_tick.js:98

Most helpful comment

In my case, the parsing of php files stopped by disabling PHP IntelliSense extension

All 46 comments

@felixfbecker This is still happening, updated version and #311 does not fix this.

I can confirm that this is still happening. I can bake a pizza on my laptop.

In my case, the parsing of php files stopped by disabling PHP IntelliSense extension

In my case, the parsing of php files stopped by disabling PHP IntelliSense extension

that's true

I disabled PHP intellisense and it fixed the issue.

yep, uninstall php intellisense extension. it doesn't work properly.

That's right -> in my case I had to uninstall the php intellisense extension to stop endless parsing...

I'm not sure if this is helpful for this issue but there is a setting to lower the memory limit for the php language server. It's set to 4gb by default. If your computer doesn't have a lot of ram, you probably want to lower that.

Screen Shot 2019-06-20 at 10 09 20 AM

I also still have this issue. And it's creating dozens (9000+) of totally wrong error messages.

I have it since a few hours, it worked perfectly for months.

I have it since a few hours, it worked perfectly for months.

Same here

Also have this issue

same here after update

alsi i have this issue

Me too - MAC fans are spinning triple time and VSC is nearly unusable.

i also have this issue after updating, was working fine before

Same here, can't stop parsing the files.

I also appeared after updating VSC. Is it a bug?

Worked fine for me yesterday. Just started doing this today.

Just uninstall PHP IntelliSence and install PHP Intelephense

Just uninstall PHP IntelliSence and install PHP Intelephense

Thanks @Crayzo . PHP Intelephense is perfect!

PHP intellisense is going nuts ... just uninstall this ram eater ..

I also had the same issue. Disabling PHP IntelliSence was the solution.

Same issue here, and resolve by disabling PHP Intelephense extension. Many thanks.

DIsabled the PHP IntelliSense and the problem disappear. Thanks for the tip!

And if I want to keep IntelliSense ? Any way to exclude folder from parsing ?

The problem is back again, worked about perfect for 4 weeks.

Intelephense is the way to go! Thanks to everyone here that recommended it!

Have the problem aswell :(

Switched to Intelephense as well.

Intelephense here too!

Seems like vscode-intellisense (or php-language-server?) should be deprecated since it performs so poorly compared to alternatives. It's a very frustrating experience trying to figure out which extension is eating your computer alive

I originally thought for many months that vscode just didn't work well with PHP, so this extension actually negatively impacted my ability to do my job since I couldn't properly work on PHP code and didn't want to leave VSCode.

bye bye PHP intellisense...

PHP IntelliSense extension should be disabled to stop parsing the PHP files.

Just uninstall PHP IntelliSence and install PHP Intelephense
this helped me https://github.com/felixfbecker/php-language-server/issues/336#issuecomment-534637224

Oh goodness, disabled php intellisense.

I experience this problem on some repos and not others. I suspect it's down to submodules rather than size, though I'm going to disable for now. Hopefully this gives others who need to troubleshoot this more a direction.

Thanks. Disabling php intellisense worked for me too.

Thanks. Disabling php intellisense worked for me too. But I need php intellisense extensions

@raftaar1191 use intelliphense

Same here, unistalling intelillisense makes everything work fine.
I recommend to install inteliphpsense instead.

@raftaar1191 use intelliphense

thanks for suggestion

Intelephense uses to eat my computer resources, It's a shame that PHP Intellisense takes so long to parse my files.

Disable PHP Intelisense for all vscode or at least for big workspaces (The bigger the workspace the worst...) 馃憤

Literally, you don't need a room heater, if you have PHP intellisense enabled and working on a Drupal site

Was this page helpful?
0 / 5 - 0 ratings

Related issues

alioygur picture alioygur  路  4Comments

marcosdefontes picture marcosdefontes  路  7Comments

thwaller picture thwaller  路  5Comments

cnmade picture cnmade  路  7Comments

felixfbecker picture felixfbecker  路  4Comments