# OPcache mínithe: taisce bytecode PHP

> OPcache mínithe: conas a oibríonn taisce bytecode PHP, cé na socruithe atá tábhachtach, cén fáth a gcaithfear é a fholmhú tar éis nuashonruithe agus conas é a chosaint.

Foinse: https://phpsos.de/ga/php/opcache/  
Staid: 25/10/2026  
Soláthraí: PHP SOS, Cabhair éigeandála PHP agus slándáil freastalaí. Cabhair láithreach trí WhatsApp: https://wa.me/491736494914?text=Dia%20duit%2C%20a%20PHP%20SOS%2C%20t%C3%A1%20cabhair%20de%20dh%C3%ADth%20orainn%20len%C3%A1r%20bhfreastala%C3%AD%20PHP.%20Cuideachta%3A%20%E2%80%A6%20Su%C3%ADomh%20gr%C3%A9as%C3%A1in%3A%20%E2%80%A6

**Go achomair:** Is é OPcache taisce bytecode comhtháite PHP. De réir an lámhleabhair, stórálann sé bytecode réamhthiomsaithe sa chuimhne roinnte, ionas nach gá do PHP scripteanna a luchtú agus a aistriú as an nua le gach iarratas. Tá sé sa phacáiste seachadta ó PHP 5.5.0 i leith. Déanann OPcache PHP níos tapúla, ach ní thagann sé in ionad nuashonraithe: tar éis paiste PHP ní mór gach próiseas PHP a atosú, ní hé an taisce amháin a fholmhú.

## Cad a dhéanann OPcache go díreach?

Le gach iarratas ní mór do PHP script a léamh, a bhriseadh síos agus a aistriú ina opcodes, is é sin na horduithe do mheaisín fíorúil an [Zend Engine](https://phpsos.de/ga/php/zend-engine/). I gcás CMS le céadta comhad, is mórán oibre é seo a athdhéantar de shíor.

Stórálann OPcache toradh an aistrithe seo sa chuimhne roinnte (Shared Memory). Úsáideann gach oibrí de sheirbhís PHP-FPM nó gach próiseas Apache le mod_php é. Mura n-athraíonn comhad, athúsáidtear a bytecode go díreach.

Luchtaítear OPcache mar eisínteacht Zend, ní mar ghnáth-eisínteacht:

```ini
; Linux (cosán de réir an phacáiste)
zend_extension=opcache.so
; Windows
; zend_extension=php_opcache.dll
```

De réir an lámhleabhair, ba cheart OPcache a luchtú roimh Xdebug má tá an dá cheann gníomhach.

Tá sé tábhachtach cé leis an gcuimhne roinnte. Le PHP-FPM, cruthaíonn an príomhphróiseas í agus úsáideann gach oibrí de gach linn den tseirbhís sin í. Le mod_php, baineann sí le príomhphróiseas Apache. Mar sin folmhaíonn atosú na seirbhíse an taisce go hiomlán, ach ní dhéanann oibrí nua aonair é. Don líne ordaithe níl aon chuimhne roinnte thar glaonna, mar is próiseas ar leith é gach glao; ansin tá OPcache as de réir réamhshocraithe.

Do lucht cinnteoireachta is leor riail ghinearálta: is beagnach i gcónaí ciallmhar é OPcache ar fhreastalaithe táirgeachta, ach teastaíonn sreabhadh soiléir uaidh d'imscaradh agus do nuashonruithe.

## Cé na socruithe OPcache atá tábhachtach?

Tagann na luachanna seo ón leathanach cumraíochta de lámhleabhar PHP. Taispeánann an colún “Inathraithe” cá bhféadfar socrú a leagan: `INI_SYSTEM` in php.ini nó i gcumraíocht an fhreastalaí amháin, `INI_ALL` i ngach áit.

| Treoir | Réamhshocrú | Inathraithe | Brí |
|---|---|---|---|
| `opcache.enable` | 1 | INI_ALL | taisce air nó as, le linn an ama rite ní féidir ach é a mhúchadh |
| `opcache.enable_cli` | 0 | INI_SYSTEM | taisce don líne ordaithe |
| `opcache.memory_consumption` | 128 | INI_SYSTEM | méid na cuimhne roinnte i MB |
| `opcache.interned_strings_buffer` | 8 | INI_SYSTEM | cuimhne do theaghráin chomhroinnte i MB |
| `opcache.max_accelerated_files` | 10000 | INI_SYSTEM | uastiúchan na scripteanna taiscthe |
| `opcache.validate_timestamps` | 1 | INI_ALL | seiceálann sé an ndearnadh comhaid a athrú |
| `opcache.revalidate_freq` | 2 | INI_ALL | eatramh seiceála i soicindí, 0 = le gach iarratas |
| `opcache.restrict_api` | folamh | INI_SYSTEM | ceadaíonn feidhmeanna API ó chosán amháin |
| `opcache.validate_permission` | 0 | INI_SYSTEM | seiceálann cearta comhad i gcoinne an úsáideora reatha |
| `opcache.validate_root` | 0 | INI_SYSTEM | cuireann sé cosc ar choimhlintí ainmneacha le chroot |
| `opcache.file_cache` | folamh | INI_SYSTEM | an dara leibhéal taisce ar an diosca |

D'fhéadfadh cumraíocht táirgeachta tipiciúil a bheith mar seo. Seiceáil na luachanna roimh ré le do fheidhmchlár:

```ini
opcache.enable=1
opcache.memory_consumption=256
opcache.interned_strings_buffer=16
opcache.max_accelerated_files=20000
opcache.validate_timestamps=1
opcache.revalidate_freq=60
opcache.restrict_api=/var/www/admin-tools
```

Má leagann tú `opcache.validate_timestamps=0` síos, faigheann tú beagán feidhmíochta. Ach ansin ní aithníonn OPcache comhaid athraithe ar chor ar bith a thuilleadh, agus teastaíonn athshocrú taisce nó atosú ó gach imscaradh.

## An taisce a thabhairt faoi deara agus a fholmhú go sonrach

Tagann feidhmeanna dá chuid féin le OPcache, lena n-áirítear `opcache_get_status()`, `opcache_get_configuration()`, `opcache_invalidate()` agus `opcache_reset()`. Sracfhéachaint ghairid, léitheoireachta ar an leibhéal líonta:

```php
<?php
$status = opcache_get_status(false);
if ($status === false) {
    exit("OPcache ist nicht aktiv.\n");
}
printf("Gecachte Skripte: %d\n", $status['opcache_statistics']['num_cached_scripts']);
printf("Freier Speicher: %.1f MB\n", $status['memory_usage']['free_memory'] / 1048576);
```

Ar fhreastalaithe le roinnt suíomhanna gréasáin, níor cheart go bhféadfadh gach feidhmchlár taisce gach feidhmchláir eile a fholmhú nó a léamh. Chuige sin atá `opcache.restrict_api` beartaithe: ní fhéadfaidh ach scripteanna faoin gcosán sonraithe na feidhmeanna API a ghlaoch.

## JIT: an tiomsaitheoir cód meaisín in OPcache

Ó PHP 8.0 i leith tá tiomsaitheoir JIT in OPcache a aistríonn opcodes ina chód meaisín. De réir RFC an JIT, is cuid beagnach neamhspleách de OPcache é agus stórálann sé an cód a ghintear i réimse dá chuid féin den chuimhne roinnte. Rialaítear é trí `opcache.jit` agus `opcache.jit_buffer_size`. Ó PHP 8.4.0 i leith tá `opcache.jit` ar `disable` de réir réamhshocraithe. Míníonn an t-alt [JIT agus feidhmíocht i PHP 8](https://phpsos.de/ga/php/jit-und-performance/) cathain is fiú an JIT.

## OPcache agus slándáil: cad a bhaineann leis tar éis PHP2Shell

Ní uirlis shlándála é OPcache, ach tá iarmhairtí aige don tslándáil. Tá trí phointe tábhachtach tar éis PHP2Shell:

1. **Ní nuashonrú é athshocrú taisce.** Ní fholmhaíonn `opcache_reset()` ach scripteanna taiscthe. Fanann an t-ateangaire leis na leochaileachtaí CVE-2026-109618 agus CVE-2026-109619 sa chuimhne go dtí go mbeidh gach próiseas atosaithe. Tá an chaoi le feiceáil ag [PHP-FPM agus gach oibrí a atosú](https://phpsos.de/ga/php2shell/php-fpm-neustart/).
2. **Is féidir le cód a cuireadh isteach maireachtáil sa taisce.** Má rinneadh comhad a mhanipiúlú agus a athsholáthar ina dhiaidh sin, is féidir leis an seanleagan leanúint ar aghaidh ag rith nuair a bhíonn an seiceáil stampaí ama múchta. Tar éis glanta, dá bhrí sin, tá atosú mar chuid den phróiseas.
3. **Teastaíonn scaradh ón gcuimhne roinnte.** Ar fhreastalaithe le go leor custaiméirí cabhraíonn linnte PHP-FPM ar leith do gach suíomh gréasáin, chomh maith le `opcache.validate_permission` agus `opcache.restrict_api`. Ní mór d'eolaire do `opcache.file_cache` a bheith inscríofa don úsáideoir PHP amháin.

> **Leid:**
> Seiceáil tar éis gach nuashonraithe an bhfuil am tosaithe na bpróiseas PHP tar éis an nuashonraithe. Ní cruthúnas é OPcache lán le ráta amais ard go bhfuil an t-ateangaire nua ag rith.

## Conas a chabhraíonn PHP SOS go praiticiúil?

- **An chumraíocht a sheiceáil:** Léimid an chumraíocht ghníomhach OPcache do gach mód oibriúcháin agus cuirimid i gcomparáid le do fheidhmchlár í.
- **Imscaradh a chosaint:** Socraímid sreabhadh seasta d'athshocrú taisce agus d'atosú ionas nach leanann seanleagan cóid ar aghaidh ag rith.
- **Tionóntaí a scaradh:** Mar chuid de [chruatú freastalaí](https://phpsos.de/ga/leistungen/server-haertung/) leagaimid síos linnte ar leith, `restrict_api` agus cearta oiriúnacha.
- **Seiceáil tar éis nuashonruithe:** Cruthaímid trí amanna tosaithe próisis go bhfuil an t-ateangaire nuashonraithe gníomhach i ndáiríre.


## Ceisteanna coitianta

**An bhfuil OPcache gníomhach de réir réamhshocraithe?**  
Seachadtar OPcache le PHP ó PHP 5.5.0 i leith agus, de réir an lámhleabhair, oibríonn sé le opcache.enable=1 mar réamhshocrú a luaithe a luchtaítear an eisínteacht. An bhfuil sí luchtaithe, braitheann sé ar do phacáiste nó ar do sholáthraí óstála. Ar an líne ordaithe, ar an láimh eile, tá OPcache as de réir réamhshocraithe (opcache.enable_cli=0).

**Cén fáth a bhfeicim an seanchód fós tar éis imscartha?**  
Is dócha nach seiceálann OPcache athruithe comhad ach i eatraimh nó ar chor ar bith. Le opcache.revalidate_freq fanann sé dhá shoicind de réir réamhshocraithe, le opcache.validate_timestamps=0 ní sheiceálann sé go deo. Ansin ní chabhraíonn ach athshocrú na taisce nó atosú PHP-FPM nó Apache.

**An leor opcache_reset() tar éis nuashonraithe PHP?**  
Ní leor. Ní fholmhaíonn opcache_reset() ach an taisce le scripteanna aistrithe. Cuireann nuashonrú PHP an t-ateangaire féin in ionad, agus tá sé luchtaithe i ngach próiseas atá ag rith. Chuige sin ní mór gach próiseas PHP a atosú.

**An bhfuil an JIT cumasaithe i PHP 8.4?**  
De réir an lámhleabhair, tá opcache.jit socraithe go disable de réir réamhshocraithe ó PHP 8.4.0 i leith, agus opcache.jit_buffer_size 64M. Roimhe sin bhí sé os coinne: jit ar tracing, maolán ar 0. Sa dá chás, níl an JIT gníomhach gan chumraíocht dheonach.

## Foinsí

- [Lámhleabhar PHP: OPcache](https://www.php.net/manual/en/book.opcache.php)
- [Lámhleabhar PHP: Cumraíocht OPcache](https://www.php.net/manual/en/opcache.configuration.php)
- [Lámhleabhar PHP: Suiteáil OPcache](https://www.php.net/manual/en/opcache.installation.php)
- [PHP RFC: JIT](https://wiki.php.net/rfc/jit)
