Weave Code
Code Weaver
Helps Laravel developers discover, compare, and choose open-source packages. See popularity, security, maintainers, and scores at a glance to make better decisions.
Feedback
Share your thoughts, report bugs, or suggest improvements.
Subject
Message

Msgpack Laravel Package

rybakit/msgpack

Pure-PHP MessagePack serializer/deserializer. Fully compliant with the spec, supports streaming unpacking, unsigned 64-bit integers, custom types/extensions (including timestamps), and object serialization. Well-tested and relatively fast.

View on GitHub
Deep Wiki
Context7

A pure PHP implementation of the MessagePack serialization format / msgpack.org[PHP]

Frequently asked questions about Msgpack
How does rybakit/msgpack compare to JSON in Laravel for API responses?
MessagePack is significantly faster and more compact than JSON, making it ideal for high-throughput APIs. Use it for structured data like Eloquent models or complex payloads, while keeping JSON for broader client compatibility. Benchmark with `MessagePack::pack()` vs. `json_encode()` in your critical routes.
Can I replace Laravel’s session/Redis caching with MessagePack instead of JSON?
Yes, MessagePack reduces payload size and speeds up cache operations. Replace `json_encode()` with `MessagePack::pack()` in `cache()->put()` or Redis commands. Ensure your cache driver supports binary data (e.g., Redis raw commands).
What Laravel versions and PHP requirements does rybakit/msgpack support?
The package works with PHP 7.4+ and Laravel 8+. For PHP 8.0+, it leverages GMP/Decimal extensions for better performance with large integers. Test with your Laravel version’s minimum PHP requirement (e.g., Laravel 9+ needs PHP 8.0+).
How do I handle custom objects like Carbon or UUID in MessagePack?
Use `TypeTransformer` or `TypeObject` to register custom types. For Carbon, extend `TypeObject` to convert timestamps to MessagePack’s timestamp extension. For UUIDs, implement a transformer to serialize/deserialize them as strings or binary.
Is there a way to stream MessagePack data for large files or chunked uploads?
Yes, use `BufferUnpacker::tryUnpack()` for partial data or `StreamUnpacker` for chunked streams. This is useful for file uploads, event sourcing, or real-time data processing where data arrives incrementally.
How do I migrate existing JSON data to MessagePack in Laravel?
Create a Laravel command or Artisan task to iterate over JSON-encoded data (e.g., in databases or caches) and repack it with `MessagePack::pack()`. Use `json_decode()` followed by `MessagePack::pack()` for direct conversion.
Will MessagePack break existing Laravel middleware or request handling?
No, it’s a drop-in replacement for `json_encode()`/`json_decode()`. For API middleware, add content negotiation (e.g., `Accept: application/msgpack`) and use `MessagePack::unpack()` in request parsing. Test with `Accept` headers to ensure backward compatibility.
Are there performance trade-offs for using MessagePack in production?
MessagePack is faster than JSON but may have slightly higher CPU usage during serialization. Benchmark with `MessagePack::pack()` vs. `json_encode()` in your specific use case (e.g., queue jobs, cache hits). Optimize with packer options like `FORCE_ARR` for predictable arrays.
Can I use MessagePack with Laravel Echo or Pusher for real-time events?
Yes, serialize payloads with `MessagePack::pack()` before sending. Configure Laravel Echo to handle `application/msgpack` content types. This reduces payload size and improves latency for WebSocket or Redis pub/sub systems.
What alternatives exist for binary serialization in Laravel, and why choose MessagePack?
Alternatives include `igbinary` (PHP extension) or `spatie/array-to-xml`. MessagePack stands out for its balance of speed, compactness, and native PHP support (no extensions). It’s ideal for Laravel’s ecosystem where JSON is dominant but binary performance is critical.
Weaver

How can I help you explore Laravel packages today?

Conversation history is not saved when not logged in.
Prompt
Add packages to context
No packages found.
nexmo/api-specification
capell-app/block-library
axium/identity
cetria/laravel-dummy-models
cetria/reflection-helper
agropredict/sso-auth-bundle
evolvestudio/spam-protection
datacore/hub-sdk
develia/commons
cuci/prototurk-sdk
cuci/prototurk-sdk-symfony
develia/geo-bundle
dreamzy/livewire-charts
touchestate-sdk/php-sdk
22h/doctrine-garbage-collection-bundle
agtp/agtp-php
agtp/mod-php
splash/sonata-admin
splash/metadata
splash/openapi